Страница 1 из 4

Не могу освоить перебор объектов по классу

Добавлено: Пн мар 02, 2020 5:01 pm
IrisKo
Добрый день. Программер из меня так себе и потому столкнулась со следующей проблемой - мне нужно сценарием заменить значение свойства "autoOff" всем комнатам с 0 на 1, казалось бы ничего сложного, но почему то не получается :(
И так делала:

$objects=getObjectsByClass('Rooms');
foreach($objects as $obj){
sg($obj['object_title'].'.autoOff',"1");
break;
}

и так:

$objects=getObjectsByClass('Rooms');
foreach($objects as $obj){
if (gg($obj['TITLE'].'.autoOff')==0){
sg($obj['TITLE'].'.autoOff',"1");
break;
}
}

и ни то ни то не работает

Re: Не могу освоить перебор объектов по классу

Добавлено: Пн мар 02, 2020 5:32 pm
fandaymon
IrisKo писал(а): Пн мар 02, 2020 5:01 pm Добрый день. Программер из меня так себе и потому столкнулась со следующей проблемой - мне нужно сценарием заменить значение свойства "autoOff" всем комнатам с 0 на 1, казалось бы ничего сложного, но почему то не получается :(
И так делала:

$objects=getObjectsByClass('Rooms');
foreach($objects as $obj){
sg($obj['object_title'].'.autoOff',"1");
break;
}

и так:

$objects=getObjectsByClass('Rooms');
foreach($objects as $obj){
if (gg($obj['TITLE'].'.autoOff')==0){
sg($obj['TITLE'].'.autoOff',"1");
break;
}
}

и ни то ни то не работает
А зачем break?

Re: Не могу освоить перебор объектов по классу

Добавлено: Пн мар 02, 2020 5:37 pm
Chainik
IrisKo писал(а): Пн мар 02, 2020 5:01 pm Добрый день. Программер из меня так себе и потому столкнулась со следующей проблемой - мне нужно сценарием заменить значение свойства "autoOff" всем комнатам с 0 на 1, казалось бы ничего сложного, но почему то не получается :(
....
Можно попробовать так:

Код: Выделить всё

$objects=getObjectsByClass("Rooms");
foreach($objects as $obj) {
   sg($obj['TITLE'].".autoOff",1);
}
Если мне надо прервать исполнение скрипта, я пишу:

Код: Выделить всё

return"";

Re: Не могу освоить перебор объектов по классу

Добавлено: Пн мар 02, 2020 5:50 pm
IrisKo
fandaymon писал(а): Пн мар 02, 2020 5:32 pm
А зачем break?
А бог его знает - где то вычитала что циклы foreach надо делать с break а то будут выполнятся бесконечно. А теперь вот отвечая на ваш вопрос думаю что в моем случае видимо оно находило первую комнату меняло там свойство и завершало цикл, а остальные комнаты оставались нетронутыми?

Re: Не могу освоить перебор объектов по классу

Добавлено: Пн мар 02, 2020 8:31 pm
fandaymon
IrisKo писал(а): Пн мар 02, 2020 5:50 pm
fandaymon писал(а): Пн мар 02, 2020 5:32 pm
А зачем break?
А бог его знает - где то вычитала что циклы foreach надо делать с break а то будут выполнятся бесконечно. А теперь вот отвечая на ваш вопрос думаю что в моем случае видимо оно находило первую комнату меняло там свойство и завершало цикл, а остальные комнаты оставались нетронутыми?
Именно так. Foreach в принципе не могут выполняться бесконечно, потому что они перебирают какие-то объекты. Объекты закончились и цикл закончился

Re: Не могу освоить перебор объектов по классу

Добавлено: Пн мар 02, 2020 8:37 pm
Logrus
IrisKo писал(а): Пн мар 02, 2020 5:50 pm
fandaymon писал(а): Пн мар 02, 2020 5:32 pm
А зачем break?
А бог его знает - где то вычитала что циклы foreach надо делать с break а то будут выполнятся бесконечно. А теперь вот отвечая на ваш вопрос думаю что в моем случае видимо оно находило первую комнату меняло там свойство и завершало цикл, а остальные комнаты оставались нетронутыми?
у вас второй вариант правильный с проверкой свойства, ну еще обрамление единички двойными кавычками не обязательно здесь, с замечанием выше

Re: Не могу освоить перебор объектов по классу

Добавлено: Пн мар 02, 2020 10:52 pm
xor
IrisKo писал(а): Пн мар 02, 2020 5:01 pm Добрый день. Программер из меня так себе и потому столкнулась со следующей проблемой - мне нужно сценарием заменить значение свойства "autoOff" всем комнатам с 0 на 1, казалось бы ничего сложного, но почему то не получается :(
...
хе, https://connect.smartliving.ru/profile/ ... ode-2.html

Код: Выделить всё

cm('grpRooms.setGroupProperty',array('property'=>'autoOff','value'=>1));

Re: Не могу освоить перебор объектов по классу

Добавлено: Вт мар 03, 2020 2:42 pm
IrisKo
Logrus писал(а): Пн мар 02, 2020 8:37 pm у вас второй вариант правильный с проверкой свойства, ну еще обрамление единички двойными кавычками не обязательно здесь, с замечанием выше
Да, так и сделала и все заработало - убрала бреак и кавычки, но условие оставила и заработало
xor писал(а): Пн мар 02, 2020 10:52 pm хе, https://connect.smartliving.ru/profile/ ... ode-2.html

Код: Выделить всё

cm('grpRooms.setGroupProperty',array('property'=>'autoOff','value'=>1));
Вот это очень интересный вариант, не пробовала, но надо будет где то применить 100% - если реально работает то очень компактненько и красиво получается :)

Re: Не могу освоить перебор объектов по классу

Добавлено: Вт мар 03, 2020 3:05 pm
IrisKo
Еще один вопрос возник. Можно ли как то таким же образом быстро и элегантно :) поменять свойство (например статус) у всех девайсов определенного класса (например реле), которые привязаны к данной конкретной комнате?

Re: Не могу освоить перебор объектов по классу

Добавлено: Вт мар 03, 2020 4:15 pm
Logrus
IrisKo писал(а): Вт мар 03, 2020 3:05 pm Еще один вопрос возник. Можно ли как то таким же образом быстро и элегантно :) поменять свойство (например статус) у всех девайсов определенного класса (например реле), которые привязаны к данной конкретной комнате?
конечно, в вашем варианте в цикле добавить условие на проверку линкедрум
в варианте групп ксора сложнее