如何获取数组中对象的值?

时间:2017-03-24 11:26:44

标签: php arrays object

我有这个对象数组:

$table=[{"count":"2","id_f":"2255"},{"count":"6","id_f":"5886"}];

我想得到每个对象的id_f的值,并检查这个值是否存在于另一个数组中,我试过这个但是它给了我错误的结果:

foreach($table as $t){

    if (in_array($t[$id_f],$array){
     //dosomething}
     }else{
     //do something else

    }
 }

我也试过这个:

foreach($table as $t){

    if (in_array($t->$id_f,$array){
     //dosomething}
     }else{
     //do something else

    }
 }

我无法获得正确的结果,我将不胜感激。

4 个答案:

答案 0 :(得分:1)

您不会在代码中的任何位置显示json_decode(),这是使用JSON字符串的第一件事,将其解码为PHP数据结构。在这种情况下是一个对象数组。

$other_array = array('2255', '9999');

$table='[{"count":"2","id_f":"2255"},{"count":"6","id_f":"5886"}]';
$array = json_decode($table);

foreach ( $array as $obj ) {
    if (in_array($obj->id_f, $other_array)) {
        echo 'Found one ' . $obj->id_f . PHP_EOL;
    } else {
        echo 'No match for ' . $obj->id_f . PHP_EOL;
    }
}

结果

Found one 2255
No match for 5886

答案 1 :(得分:1)

没有foreach循环的另一种方法:

<?php
$table=json_decode('[{"count":"2","id_f":"2255"},{"count":"6","id_f":"5886"}]');
$data = [10, 20, 2255];
array_walk($table, function($obj) use (&$data) {
    if (in_array($obj->id_f, $data)) {
        echo "+";
    } else {
        echo "-";
    }
});

输出显然是:

  

+ -

答案 2 :(得分:0)

在您的对象属性名称之前不需要美元符号(实际上,它不会起作用,当然,除非$id_f是一个实际变量,其值为{{1但是,不知怎的,我怀疑它):

'id_f'

答案 3 :(得分:0)

可以这样做:

使用json字符串方法定义您可以定义的对象数组。或者定义对象就像这个 <?php $table='[{"count":"2","id_f":"2255"},{"count":"6","id_f":"5886"}]'; $obj = json_decode($table); $array=array("2555","2255"); foreach($obj as $t){ if (in_array($t->id_f,$array)){ //dosomething }else{ //do something else } } ?>

name :- s/Str, 
place :- s/Str,