Страница 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);
}
Если мне надо прервать исполнение скрипта, я пишу:
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
у вас второй вариант правильный с проверкой свойства, ну еще обрамление единички двойными кавычками не обязательно здесь, с замечанием выше
Да, так и сделала и все заработало - убрала бреак и кавычки, но условие оставила и заработало
Вот это очень интересный вариант, не пробовала, но надо будет где то применить 100% - если реально работает то очень компактненько и красиво получается

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

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

поменять свойство (например статус) у всех девайсов определенного класса (например реле), которые привязаны к данной конкретной комнате?
конечно, в вашем варианте в цикле добавить условие на проверку линкедрум
в варианте групп ксора сложнее