У меня есть php-код, который анализирует массив xml; то, что я хочу сделать, это изменить следующее значение этой находки. Я могу правильно отследить вывод, но при попытке изменить значение я получаю фатальную ошибку.PHP с использованием foreach, изменение следующего значения возвращает фатальную ошибку
Я называю свою функцию следующим образом:
$ XML = replaceDeleteOrAddMethod ("пустота", "метод", "положить", $ templateID_category, $ XML, "категория", "itsastring");
и функция Я сделал, выглядит следующим образом:
function replaceDeleteOrAddMethod($element, $methodName, $methodValue, $newValue, $xml, $methodstringname, $methodvartype)
{
//echo "replacing Value for: " . $propertyValue;
foreach ($xml->xpath("//" . $element) as $tmp)
{
//echo $tmp->string . "<br>";
if((string) $tmp[$methodName] == $methodValue)
{
if ($tmp->string == $methodstringname)
{
switch ($methodvartype){
case "itsastring":
echo $tmp->string . "<br>";
echo next($tmp->string) . "-> NewValue: " . $newValue . "<br>";
next($tmp->string) = $newValue;
break;
case "itsaint":
echo $tmp->int . "<br>";
next($tmp->int) = $newValue;
break;
case "itsabool":
echo $tmp->bool . "<br>";
next($tmp->bool) = $newValue;
break;
}
}
}
}
return($xml);
}
Если я $ tmp-> строка = $ новое_значение Я могу отредактировать строку с новым значением; но следующий ($ tmp-> string) = $ newValue; дает мне фатальную ошибку.
Спасибо за помощь.
Возможный дубликат [PHP - Изменить текущий объект в цикле foreach] (http://stackoverflow.com/questions/10121483/php-modify-current-object-in-foreach-loop) – River
Это не то же самое, я Я не говорю о ссылках на использование & Я говорю, почему использование следующего не позволяет мне изменить значение, но повторяет, что следующий vlaue работает – JSChasle
Просто нужно сделать: $ tmp-> string [1] = $ newValue; (чтобы получить второе значение строки – JSChasle