|
|
|
| Добрый ден. Помогите разобраться почему не верно работает пхп скрипт.
<?php
header("Content-type: text/xml");
$string = <<<XML
<?xml version="1.0"?>
<PAGE>
<title>first</title>
<title>second</title>
</PAGE>
XML;
$dom=simplexml_load_string($string);
foreach ($dom as $PAGE) {
$PAGE->title=qweqweqwe;
}
// file_put_contents('test.xml',$dom->asXML());
$xmltext1 = $dom->asXML();
echo $xmltext1;
?>
|
в результате получаю следующий результат:
<PAGE>
<title>
first
<title>
qweqweqwe
</title>
</title>
<title>
second
<title>
qweqweqwe
</title>
</title>
</PAGE>
|
а мне необходимо
<PAGE>
<title>
qweqweqwe
</title>
<title>
qweqweqwe
</title>
</PAGE>
|
| |
|
|
|
|
|
|
|
для: alex123434
(29.07.2012 в 13:39)
| | Во-первых, руководство гласит:
Конструкция foreach даёт простой способ итерировать по массиву. Но следует помнить, что foreach работает с копией специфицированного массива, а не с самим массивом, следовательно, указатель массива не изменяется, как при работе конструкции each(), и изменения в возвращаемом элементе массива не влияют на массив-оригинал. | |
|
|
|
|
|
|
|
для: confirm
(29.07.2012 в 14:59)
| | Что то я each не использовал подскажите как это правильно сделать или ссылку на пример дайте | |
|
|
|
|
|
|
|
для: alex123434
(29.07.2012 в 19:05)
| | Зачем обязательно each(), примеры которого вы можете найти тут. Вам же нужен вывод, насколько можно судить по коду вашему, значит во время итерации foreach() просто выводите нужное вам, зачем сперва изменить, а потом выводить? Просто нужно использовать такой синтаксис этой конструкции:
foreach(array_expression as $key => $value)
так как вам нужно же еще работать с ключами. | |
|
|
|
|
|
|
|
для: confirm
(29.07.2012 в 19:38)
| | Выводить мне не надо мне надо изменить значение в xml (DOM), а уже потом этот преобразованный xml будет и нужен. Если не сложно напишите пример замены текста в title, а то что то совсем запутался | |
|
|
|
|
|
|
|
для: alex123434
(29.07.2012 в 20:12)
| | Ну так используйте цикл for() или while(), проверяйте ключи вас интересующие, и производите действия необходимые. Видя в примерах руководства конструкцию fareach(), не думайте, что это единственное, чем можно подступиться к элементам.
Прочтите в руководстве о SimpleXMLIterator (кстати, это вам может и пригодиться, если вы хотите менять дерево), там есть примеры в которых for(), думаю, что вникнув, вы поймете почему. Ну и для своего можете применить. | |
|
|
|
|
|
|
|
для: confirm
(29.07.2012 в 20:31)
| | Буду разбираться | |
|
|
|