从php对象获取属性

时间:2017-05-31 14:26:54

标签: php arrays object

我做了一个php对象$grid的var转储,我需要访问这个属性:

["wpupg_post_types"]=> array(1) { [0]=> string(21) "a:1:{i:0;s:4:"post";}" } 

我需要得到“#34; post"出于那个。我试着做了

$posttype = $grid->wpupg_post_types;
if (in_array("post", $posttype)) {
 echo "post";
}

但那并没有奏效。如果我试试 var_dump($grid->wpupg_post_types);它返回NULL。

你知道我怎么做吗?

2 个答案:

答案 0 :(得分:2)

变量是序列化的字符串数组:

a:1:{i:0;s:4:"post";}

关闭第一项,然后将其传递给unserialize(),将其变为数组:

$result = unserialize(array_shift($grid->wpupg_post_types));

这会产生:

Array
(
    [0] => post
)

注意:这假设该属性是公开的。

答案 1 :(得分:2)

php > $array = [serialize(['post'])]; php > var_dump($array); php shell code:1: array(1) { [0] => string(21) "a:1:{i:0;s:4:"post";}" } 包含一个元素的数组,其中包含带post的序列化数组。

php > var_dump(in_array('post', unserialize($array[0])));
php shell code:1:
bool(true)

要检查帖子是否在数组中,您需要进行另一种检查

if(in_array('post', unserialize($grid->wpupg_post_types[0]))) {
    echo 'post';
}

你的具体情况应该是

$ php -a
Interactive shell

php > $array = [serialize(['post'])];
php > var_dump($array);
php shell code:1:
array(1) {
  [0] =>
  string(21) "a:1:{i:0;s:4:"post";}"
}
php > var_dump(in_array('post', unserialize($array[0])));
php shell code:1:
bool(true)
php >

编辑:这是我的交互式shell

class NodeController {
    static root(data, callback){
        let tmp;
        socket.emit('/', data, function (response) {
            tmp = response;
            callback(tmp);
        });
    }
}