Почему я получаю значение NULL после использования значения -> (запрос php / xpath / xml)? - PullRequest
0 голосов
/ 30 декабря 2018

Я сделал запрос моего файла XML.Теперь я хочу сохранить результат (идентификаторы) в файл JSON.

Проблема в результате я получаю:

"пользователь": {"0": "Майкл"}

Но мне нужно:

"пользователь": "Майкл"

Я использую следующий код:

$ids = [];

$idAttributes = $xmlfile->xpath("myquery...");
foreach ($idAttributes as $idAttribute) {

    $ids[] = $idAttribute[0]; 
}

print_r("My output : " . $ids[0]);

$user1 = $ids[0];
$user2 = $ids[1];
$user3 = $ids[2];

Я также пытался $ idAttribute-> value.Чтобы получить только имя, которое я могу сохранить в моем JSON.Но я получаю только ноль ... Когда я печатаю удостоверение личности.Я правильно понимаю, например, «Том».Как я могу сохранить его только как "Том", а не как "пользователь": {"0": "Майкл"}?

ОБНОВЛЕНИЕ

IDs var_dump: 

string(14) "The IDS: Array" string(19) " 

ID i : " string(14) "The IDS: Array" string(19) " 
ID i : " string(14) "The IDS: Array" string(19) " 
ID i : " 

My output : Bill

1 Ответ

0 голосов
/ 30 декабря 2018

Строка приведёт значение (string) $idAttribute[0];:

$ids = [];

$idAttributes = $xmlfile->xpath("myquery...");
foreach ($idAttributes as $idAttribute) {

    $ids[] = (string) $idAttribute[0]; 
}

print_r("My output : " . $ids[0]);

$user1 = $ids[0];
$user2 = $ids[1];
$user3 = $ids[2];

Каждый узел в SimpleXML является объектом.У него есть __ toString метод для преобразования его в строку.

Если вы используете print / echo для этого объекта: он также показывает значение "string", а не текущеереальное состояние, будучи объектом.Используйте print_r или var_dump, чтобы увидеть его правильно.

...