숫자 만 있으면 필드에 액세스 할 수 없습니다. 객체를 간단한 1 차원 배열로 캐스팅하면 필드가 숫자가됩니다.
array(10, 20, 30); // same as: array(0 => 10, 1 => 20, 2 => 30);
유일한 방법은 일부 문자가있는 2 차원 배열을 만드는 것입니다. 예 :
<?php
$numeric_index_array = array('1.' => 10, 2 => 20, '3' => 30) ;
$obj_numeric_index = (object)$numeric_index_array ;
var_dump($obj_numeric_index);
echo $obj_numeric_index->1.; // no
echo $obj_numeric_index->'1.'; // no
echo $obj_numeric_index->{'1.'}; // OK !
echo $obj_numeric_index->2.; // no
echo $obj_numeric_index->'2'; // no
echo $obj_numeric_index->{'2'}; // no
echo $obj_numeric_index->3; // no
echo $obj_numeric_index->{3}; // no
echo $obj_numeric_index->{'3'}; // no
실용적이지 않습니다.
편집. 배열을 객체로 변환하는 올바른 방법은 다음과 같습니다.
<?php
$numeric_index_array = array(10, 20, 30) ;
$obj = new StdClass;
array_walk($numeric_index_array, function(&$val, $key) use (&$obj) {
$obj->{$key} = $val;
});
echo $obj->{1}; // OK !
이해가 안됩니다. 배열과 같은 객체 속성에 액세스하려고합니까? 왜 당신은 객체 컨텍스트에 있지 않습니까? –