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

无法使用PHP检查json键值是否不存在,php,arrays,json,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']

我需要一些帮助。我需要检查键值是否存在于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":[[],[]]}

请帮助我解决此问题。

您正在对标量值使用PHP的in_数组函数

$v['type']是一个整数,类似于

1 === $v['type']

将在数组元素而不是数组中搜索元素

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

?>
使用函数。例如:

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

如果我改变了一种类型=2,而另一种类型为1,则不会出现正确的输出。
foreach ($mainArr as $v) {
    if (!array_search('1', $v)) {
        $result['primary'][]=array();
    } else {...}