Сначала необходимо инициализировать массив $result
:
$result = array('user' => array());
А так как вы используете оператор конкатенации и присваивания строк .=
, это также относится к массивам $result['user'][$x]
:
foreach($doc->users->user as $item) {
$result['user'][$x] = array(
'id' => null,
'name' => null,
'email' => null
);
$result['user'][$x]['id'] .= $item->id;
$result['user'][$x]['name'] .= $item->name;
$result['user'][$x]['email'] .= $item->email;
$x++;
}
Но в этом нет необходимости, поскольку вы также можете написать это так:
$result = array('user' => array());
foreach($doc->users->user as $item) {
$result['user'][] = array(
'id' => $item->id,
'name' => $item->name,
'email' => $item->email
);
}
Редактировать Поскольку мы выяснили, что атрибутами $item
являются SimpleXMLElement объектов тоже, $item->attr[0]
требуется для обращения к самому строковому значению. Таким образом:
$result = array('user' => array());
foreach($doc->users->user as $item) {
$result['user'][] = array(
'id' => $item->id[0],
'name' => $item->name[0],
'email' => $item->email[0]
);
}