@lolzqq
HTML,CSS,JS,PHP

Как лаконично в SimpleXML указать итератором переменную (без xPath и DOM)?

XML-файл:
<?xml version="1.0" encoding="utf-8"?>
<top>
...
<block>
<id>0</id>
<n>Procyon1</n>
<f>f</f>
<t>d</t>
<r>r</r>
<l>112</l>
<q>u</q>
<e>?</e>
<b>?</b>
<p>?</p>
<s>?</s>
<c>?</c>
<sp>1</sp>
<bm>4</bm>
</block>
...
</top>


Тэгов , наполненных содержимым из и остальных буквеных тегов есть 100 штук.
Из формы сайта через GET-запрос посылается полный набор для изменения содержимого одного из таких контейнеров.
...script.php?id=2&n=Procyon1&f=f&t=d&r=r&l=314&q=u&e=%3F&b=%3F&p=%3F&s=%3F&c=%3F&sp=1&bm=4...

И мне нужно заменить содержимое контейнеров на поступившие данные из формы.

Пока сделал вот так (через содержимое в ходе цикла нахожу ссылку на нужный :
$sdb = simplexml_load_file('db.xml');
$i=$_GET['id'];
			foreach($sdb->block as $block){
				
				if ($i==$block->id){
					
					foreach ($_GET as $key=>$value)
					{	
						$block->{$key}=$value;

					};
				}
			};
			$sdb->asXml('db.xml');


Вопрос : как построить конструкцию поиска блока по итератору, который выражен переменной, хранящей число,
чтобы вместо двух циклов с получением ссылки на $block в $block->{$key}=$value
можно было использовать что-то типа $sdb->block[ $i ]->{$key}=$value по аналогии с $sdb->block[2]->{$key}=$value ?
  • Вопрос задан
  • 54 просмотра
Решения вопроса 1
@grinat
Сохранить во временную переменную ссылку $tmp = &$sdb->block[0]; $tmp->{$key}=$value
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы