简体   繁体   English

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

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

Array cannot get value by key from unserialize. 数组无法通过反序列化获取键值。 It show error Undefined offset, but the array has the index call "1134". 它显示错误未定义的偏移量,但该数组具有索引调用“1134”。 How can I get the index 1134 value? 如何获得索引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

You've to iterate over your unserialized data and then store it into an array: 您将迭代未序列化的数据,然后将其存储到数组中:

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

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

Try this, you can use it like object or may like to use get_object_vars() to use it like array or may use type casting. 试试这个,你可以像对象一样使用它,或者可能喜欢使用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 

Your code is running fine in my PHP version 7.2. 我的PHP版本7.2中的代码运行正常。 It seems you are using PHP 5.4 or 5.6. 看来你使用的是PHP 5.4或5.6。 Anyway I have updated code for your php version and hope it will work. 无论如何,我已经更新了你的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