3 回答

TA貢獻1862條經(jīng)驗 獲得超6個贊
更新PHP 7.2
原始答案(適用于7.2.0之前的版本)
他們從沒告訴過你
事實1:
$a = array('123' => '123', '123foo' => '123foo');$o = (object)$a;echo $o->123foo; // error
事實2:
$a = array('123' => '123', '123foo' => '123foo');$o = (object)$a;echo $o->{'123foo'}; // OK!
事實3:
$a = array('123' => '123', '123foo' => '123foo');$o = (object)$a;echo $o->{'123foo'}; // OK!echo $o->{'123'}; // error!
活例.
事實4:
$a = array('123' => '123');$o1 = (object)$a;$o2 = new stdClass;$o2->{'123'} = '123'; // setting property is OKecho $o1->{'123'}; // error!echo $o2->{'123'}; // works... WTF?
活例.
你能做什么
選項1:手動執(zhí)行
$a = array('123' => '123', '123foo' => '123foo');$o = (object)$a;$a = (array)$o;echo $o->{'123'}; // error!echo $a['123']; // OK!
$highlighting = (array)$myVar->highlighting;$data = (array)$highlighting['448364']->Data;$value = $data['0']; // at last!
備選案文2:核選擇
function recursive_cast_to_array($o) { $a = (array)$o; foreach ($a as &$value) { if (is_object($value)) { $value = recursive_cast_to_array($value); } } return $a;}$arr = recursive_cast_to_array($myVar);$value = $arr['highlighting']['448364']['Data']['0'];
選項3:聰明地玩它
$arr = json_decode(json_encode($myVar), true);$value = $arr['highlighting']['448364']['Data']['0'];
json_encode
).

TA貢獻1797條經(jīng)驗 獲得超6個贊
$arr = array('123' => 'abc');$obj = (object) $arr;$obj->{'123'} = 'abc';print_r( $obj );
stdClass Object ( [123] => 'abc', [123] => 'abc')
#Fact 4
$obj = json_decode(json_encode($arr));
$obj->{123};$obj->{'123'};

TA貢獻1839條經(jīng)驗 獲得超15個贊
<?php function objectToArray($d) { if (is_object($d)) { // Gets the properties of the given object // with get_object_vars function $d = get_object_vars($d); } if (is_array($d)) { /* * Return array converted to object * Using __FUNCTION__ (Magic constant) * for recursive call */ return array_map(__FUNCTION__, $d); } else { // Return array return $d; } }?>
首先將數(shù)組傳遞給 objectToArray
功能 然后取返回值 回波 [highlighting][448364][Data][0]
- 3 回答
- 0 關(guān)注
- 483 瀏覽
添加回答
舉報