Так что ли?DiminatorDK писал(а): ↑Вс дек 23, 2018 2:57 pmСпасибо! Помогло! Осталось с нумерацией индекса разобраться и как-то прибавить к нему единицу Мне кажется надо ввести отдельную переменную к которой будет прибавляться единица. Что-то типа а=12 а потом в цикле а=а+1. Если такое возможно.
Код: Выделить всё
$status = file_get_contents('http://192.168.1.21/state.xml');
$ot=$this->object_title;
$status = preg_match("!<iovalue>(.*?)</iovalue>!si", $status, $matches);
$arr = str_split($matches['1']);
echo "Array:". $matches['1'] ." <br>";
echo "ObjectName:". $ot ." <br>";
echo "Position 12= ". $matches['1']['11'] ." <br>";
echo "Arr position 12= ". $arr['11'] ." <br>";
foreach ($arr as $index => $value) {
if ($index >= 11) {
$index = $index + 1;
sg ('"module1.relay".$index.".Status"',$value);
//echo "Номер выхода- " . $index .", значение: " . $value ." <br>";
}
}
Вы же, насколько я понял, хотели выставлять статусы единичным портам, причем классовым методом. Думаю, тут можно поступить таким образом.
В классе добавляем свойства (возможно, часть свойств уже есть):
ipAddress - IP-адрес контроллера;
Port - номер порта, относящийся к конкретному объекту;
Status - отражает состояние порта ("0" или "1").
В классе добавляем метод, с помощью которого будет устанавливаться статус конкретного порта. Можно назвать его как угодно, но пусть будет GetStatus. Запишем туда код метода:
Код: Выделить всё
$status = file_get_contents("http://".$this->getProperty('ipAddress')."/state.xml");
$ot=$this->object_title;
$Port = $this->getProperty('Port');
$status = preg_match("!<iovalue>(.*?)</iovalue>!si", $status, $matches);
$arr = str_split($matches['1']);
$this->setProperty('Status', $arr[$Port-1]);