Задать вопрос
@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 ?
  • Вопрос задан
  • 55 просмотров
Подписаться Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
@grinat
Сохранить во временную переменную ссылку $tmp = &$sdb->block[0]; $tmp->{$key}=$value
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽