Не могу освоить перебор объектов по классу
Модератор: immortal
-
- Сообщения: 60
- Зарегистрирован: Пт фев 15, 2019 12:19 pm
- Благодарил (а): 19 раз
- Поблагодарили: 4 раза
Не могу освоить перебор объектов по классу
Добрый день. Программер из меня так себе и потому столкнулась со следующей проблемой - мне нужно сценарием заменить значение свойства "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;
}
}
и ни то ни то не работает
И так делала:
$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;
}
}
и ни то ни то не работает
-
- Сообщения: 1554
- Зарегистрирован: Сб янв 13, 2018 5:00 pm
- Благодарил (а): 39 раз
- Поблагодарили: 574 раза
Re: Не могу освоить перебор объектов по классу
А зачем break?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;
}
}
и ни то ни то не работает
-
- Сообщения: 1462
- Зарегистрирован: Вс янв 10, 2016 11:05 am
- Благодарил (а): 260 раз
- Поблагодарили: 454 раза
Re: Не могу освоить перебор объектов по классу
Можно попробовать так:
Код: Выделить всё
$objects=getObjectsByClass("Rooms");
foreach($objects as $obj) {
sg($obj['TITLE'].".autoOff",1);
}
Код: Выделить всё
return"";
- Рейтинг: 1.16%
-
- Сообщения: 60
- Зарегистрирован: Пт фев 15, 2019 12:19 pm
- Благодарил (а): 19 раз
- Поблагодарили: 4 раза
Re: Не могу освоить перебор объектов по классу
А бог его знает - где то вычитала что циклы foreach надо делать с break а то будут выполнятся бесконечно. А теперь вот отвечая на ваш вопрос думаю что в моем случае видимо оно находило первую комнату меняло там свойство и завершало цикл, а остальные комнаты оставались нетронутыми?
-
- Сообщения: 1554
- Зарегистрирован: Сб янв 13, 2018 5:00 pm
- Благодарил (а): 39 раз
- Поблагодарили: 574 раза
Re: Не могу освоить перебор объектов по классу
Именно так. Foreach в принципе не могут выполняться бесконечно, потому что они перебирают какие-то объекты. Объекты закончились и цикл закончилсяIrisKo писал(а): ↑Пн мар 02, 2020 5:50 pmА бог его знает - где то вычитала что циклы foreach надо делать с break а то будут выполнятся бесконечно. А теперь вот отвечая на ваш вопрос думаю что в моем случае видимо оно находило первую комнату меняло там свойство и завершало цикл, а остальные комнаты оставались нетронутыми?
- Рейтинг: 1.16%
-
- Сообщения: 2084
- Зарегистрирован: Пт апр 07, 2017 12:20 pm
- Благодарил (а): 313 раз
- Поблагодарили: 457 раз
Re: Не могу освоить перебор объектов по классу
у вас второй вариант правильный с проверкой свойства, ну еще обрамление единички двойными кавычками не обязательно здесь, с замечанием вышеIrisKo писал(а): ↑Пн мар 02, 2020 5:50 pmА бог его знает - где то вычитала что циклы foreach надо делать с break а то будут выполнятся бесконечно. А теперь вот отвечая на ваш вопрос думаю что в моем случае видимо оно находило первую комнату меняло там свойство и завершало цикл, а остальные комнаты оставались нетронутыми?
- Рейтинг: 1.16%
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
- xor
- Сообщения: 2039
- Зарегистрирован: Сб ноя 22, 2014 8:45 pm
- Благодарил (а): 286 раз
- Поблагодарили: 629 раз
Re: Не могу освоить перебор объектов по классу
хе, https://connect.smartliving.ru/profile/ ... ode-2.html
Код: Выделить всё
cm('grpRooms.setGroupProperty',array('property'=>'autoOff','value'=>1));
- Рейтинг: 1.16%
win10 connect https://connect.smartliving.ru/profile/303
-
- Сообщения: 60
- Зарегистрирован: Пт фев 15, 2019 12:19 pm
- Благодарил (а): 19 раз
- Поблагодарили: 4 раза
Re: Не могу освоить перебор объектов по классу
Да, так и сделала и все заработало - убрала бреак и кавычки, но условие оставила и заработало
Вот это очень интересный вариант, не пробовала, но надо будет где то применить 100% - если реально работает то очень компактненько и красиво получаетсяxor писал(а): ↑Пн мар 02, 2020 10:52 pmхе, https://connect.smartliving.ru/profile/ ... ode-2.html
Код: Выделить всё
cm('grpRooms.setGroupProperty',array('property'=>'autoOff','value'=>1));
- Рейтинг: 1.16%
-
- Сообщения: 60
- Зарегистрирован: Пт фев 15, 2019 12:19 pm
- Благодарил (а): 19 раз
- Поблагодарили: 4 раза
Re: Не могу освоить перебор объектов по классу
Еще один вопрос возник. Можно ли как то таким же образом быстро и элегантно поменять свойство (например статус) у всех девайсов определенного класса (например реле), которые привязаны к данной конкретной комнате?
-
- Сообщения: 2084
- Зарегистрирован: Пт апр 07, 2017 12:20 pm
- Благодарил (а): 313 раз
- Поблагодарили: 457 раз
Re: Не могу освоить перебор объектов по классу
конечно, в вашем варианте в цикле добавить условие на проверку линкедрум
в варианте групп ксора сложнее
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо