Как я могу получить доступ к свойству / значению массива, который был преобразован в объект? Например, я хочу получить доступ к значению в индексе 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"