Как получить доступ к свойству / значению массива, который был преобразован в объект?

Как я могу получить доступ к свойству / значению массива, который был преобразован в объект? Например, я хочу получить доступ к значению в индексе 0,

$obj = (object) array('qualitypoint', 'technologies', 'India'); var_dump($obj->0); 

ошибка,

Ошибка анализа: синтаксическая ошибка, неожиданный T_LNUMBER, ожидающий T_STRING или T_VARIABLE или '{' или '$' в C: … convertting_to_object.php в строке 11

Причина, по которой вы не можете получить доступ к значениям через $obj->0 потому что это против имени переменной PHP, см. http://php.net/manual/en/language.variables.basics.php для получения дополнительной информации. даже если вы используете ArrayObject вас будут все те же проблемы

но есть патч к этому … вы можете преобразовать все целые ключи в строку или написать свою собственную функцию преобразования

пример

 $array = array('qualitypoint', 'technologies', 'India' , array("hello","world")); $obj = (object) $array; $obj2 = arrayObject($array); function arrayObject($array) { $object = new stdClass(); foreach($array as $key => $value) { $key = (string) $key ; $object->$key = is_array($value) ? arrayObject($value) : $value ; } return $object ; } var_dump($obj2->{0}); // Sample Output var_dump($obj,$obj2); // Full Output to see the difference $sumObject = $obj2->{3} ; /// Get Sub Object var_dump($sumObject->{1}); // Output world 

Вывод

  string 'qualitypoint' (length=12) 

Полная мощность

 object(stdClass)[1] string 'qualitypoint' (length=12) string 'technologies' (length=12) string 'India' (length=5) array 0 => string 'hello' (length=5) 1 => string 'world' (length=5) object(stdClass)[2] public '0' => string 'qualitypoint' (length=12) public '1' => string 'technologies' (length=12) public '2' => string 'India' (length=5) public '3' => object(stdClass)[3] public '0' => string 'hello' (length=5) public '1' => string 'world' (length=5) 

Multi Array Outpur

благодаря

🙂

Попытка:

 $obj = (object) array('test' => 'qualitypoint', 'technologies', 'India'); var_dump($obj->test); 

Результат:

 string(12) "qualitypoint" 

Но, пытаясь получить доступ к $obj->0 , появляется та же ошибка: Parse error: syntax error, unexpected T_LNUMBER, expecting T_STRING or T_VARIABLE or '{' or '$' : Parse error: syntax error, unexpected T_LNUMBER, expecting T_STRING or T_VARIABLE or '{' or '$'

Если вы прокрутите объект, жесткий, вы можете получить доступ к свойствам обычно как обычный массив:

 foreach($obj as $x) { var_dump($x); } 

Вначале правила именования свойств те же, что и основные правила именования переменных .

Если вы конвертируете его в ArrayObject, вы можете получить доступ к индексу в обычном режиме:

 $obj = new ArrayObject(array('qualitypoint', 'technologies', 'India')); 

И сбросить его:

 var_dump($obj[0]); 

Вы получите:

 string(12) "qualitypoint"