我有这个对象数组:
$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
}
}
我无法获得正确的结果,我将不胜感激。
答案 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,