反序列化后的PHP数组无法通过键获取值

时间:2018-10-26 07:03:30

标签: php

数组无法通过反序列化从键获取值。它显示错误Undefined offset,但是数组的索引调用为“ 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

4 个答案:

答案 0 :(得分:2)

您必须遍历未序列化的数据,然后将其存储到数组中:

<?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

答案 1 :(得分:2)

尝试一下,您可以像使用对象一样使用它,或者可以像数组一样使用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
?>

答案 2 :(得分:1)

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

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

答案 3 :(得分: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]);