簡體   English   中英

反序列化后的PHP數組無法通過鍵獲取值

[英]PHP array after unserialize cannot get value by key

數組無法通過反序列化獲取鍵值。 它顯示錯誤未定義的偏移量,但該數組具有索引調用“1134”。 如何獲得索引1134值?

$original = unserialize('O:8:"stdClass":1:{s:4:"1134";i:1;}');

$result = (array)$original;
print_r ($result); //Array ( [1134] => 1 ) 

print_r($result["1134"]); //Undefined offset: 1134
print_r($result['1134']); //Undefined offset: 1134
print_r($result[1134]); //Undefined offset: 1134

您將迭代未序列化的數據,然后將其存儲到數組中:

<?php
$original = unserialize('O:8:"stdClass":1:{s:4:"1134";i:1;}');
$arr = [];
foreach($original as $key => $values) {
    $arr[$key] = $values;
}
echo $arr[1134] // outputs 1
?>

輸出: - https://3v4l.org/B94OS#v5638

試試這個,你可以像對象一樣使用它,或者可能喜歡使用get_object_vars()來像數組一樣使用它,或者可以使用類型轉換。

<?php
$original = unserialize('O:8:"stdClass":1:{s:4:"1134";i:1;}');
var_dump($original->{1134}); //Object
var_dump(get_object_vars($original)['1134']); //array
?>
$original = unserialize('O:8:"stdClass":1:{s:4:"1134";i:1;}');

$result = (array)$original;
print_r($result[1134]); //print 1 

我的PHP版本7.2中的代碼運行正常。 看來你使用的是PHP 5.4或5.6。 無論如何,我已經更新了你的php版本的代碼,並希望它會工作。

 $original = unserialize('O:8:"stdClass":1:{s:4:"1134";i:1;}');
 $result = json_decode(json_encode($original), True);
 print_r ($result);
 print_r($result["1134"]); 
 print_r($result['1134']); 
 print_r($result[1134]);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM