Если ваш объект структурирована следующим образом: (объект> массив> объект> массив), то вы звоните индексы/ключи ошибочны. Обратите внимание на следующий пример:
$x = new stdClass();
$x->channel = array();
$y = new stdClass();
$y->title = "Bar Foo";
$x->channel[0] = $y;
//echo $x['channel']->item[$i]->title;
//// Fatal error: Cannot use object of type stdClass as array
echo $x->channel[0]->title;
//// Success
Но если это структурировано так, как вы описываете, то ваша эхо линия дает мне правильный вывод (смотри ниже), так что вы, вероятно, создать массив или объект, где-то, что не правильно сопоставьте то, что вы описали в приведенном выше псевдокоде.
$x = array();
$x['channel'] = new stdClass();
$x['channel']->item = array();
$x['channel']->item[0] = new stdClass();
$x['channel']->item[0]->title = "Bar Foo";
echo $x['channel']->item[0]->title;
На стороне записки, если вы обнаружите, что вам нужно «знак доллара» сложные структуры (например, динамические имена переменных, включающих индексы массива), вы можете сделать это, используя фигурные скобки, как это:
$x = 2;
$y = array("x"=>$x);
print $($y['x']);
«Это дает результат, но с уведомлением« ... какое уведомление? – Khalid
Должно быть что-то вроде '$ sxml [0] ['channel']' – cybersoft
@Khalid Примечание: попытка получить свойство не объекта – saravanabawa