无法使用PHP检查json键值是否不存在

时间:2017-05-26 14:17:25

标签: php arrays json

我需要一些帮助。我需要检查天气,json数组中是否存在键值,或者不使用PHP,但是它会抛出一些警告信息并且没有值。我在下面解释我的代码。

$mainArr=array(array("type"=>1,"name"=>"hello"),array("type"=>1,"name"=>"hii"));
//echo json_encode($mainArr);
foreach ($mainArr as $v) {
    if(!in_array(1, $v['type'])){
        $result['primary'][]=array();
    }else{
        $result['primary'][]=$v;
    }
    if(!in_array(2, $v['type'])){
        $result['secondary'][]=array();
    }else{
        $result['secondary'][]=$v;
    }
}
echo json_encode($result);  

在这里,我需要检查该数组中是否存在type==2,它应该返回空白数组,但是它会抛出以下信息。

Warning: in_array() expects parameter 2 to be array, integer given in /opt/lampp/htdocs/test/arrchk.php on line 5

Warning: in_array() expects parameter 2 to be array, integer given in /opt/lampp/htdocs/test/arrchk.php on line 10

Warning: in_array() expects parameter 2 to be array, integer given in /opt/lampp/htdocs/test/arrchk.php on line 5

Warning: in_array() expects parameter 2 to be array, integer given in /opt/lampp/htdocs/test/arrchk.php on line 10
{"primary":[[],[]],"secondary":[[],[]]}

请帮我解决此问题。

4 个答案:

答案 0 :(得分:1)

您在标量值上使用PHP的in_array函数。

$ v [' type']是一个整数,像

这样的简单比较
1 === $v['type']

将完成这项工作

答案 1 :(得分:0)

您搜索数组元素中的元素而不是数组。

<?php
$mainArr = array(
    array(
        "type" => 1,
        "name" => "hello"
    ),
    array(
        "type" => 1,
        "name" => "hii"
    )
);
//echo json_encode($mainArr);
foreach ($mainArr as $v) {
    if (!in_array(1, $v)) {
        $result['primary'][] = array();
    } else {
        $result['primary'][] = $v;
    }
    if (!in_array(2, $v)) {
        $result['secondary'][] = array();
    } else {
        $result['secondary'][] = $v;
    }
}
echo json_encode($result);

?>

答案 2 :(得分:0)

$mainArr=array(array("type"=>1,"name"=>"hello"),array("type"=>1,"name"=>"hii"));
//echo json_encode($mainArr);
foreach ($mainArr as $v => $values) {
    if(!in_array(1, $values['type'])){
        $result['primary'][]=array();
}else{
    $result['primary'][]=$values;
}
if(!in_array(2, $values['type'])){
    $result['secondary'][]=array();
}else{
    $result['secondary'][]=$values;
}
}
echo json_encode($result);

答案 3 :(得分:0)

使用array_search()功能。例如:

foreach ($mainArr as $v) {
    if (!array_search('1', $v)) {
        $result['primary'][]=array();
    } else {...}