Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何检查数组的一个元素是否存在于另一个数组中_Php_Arrays_Multidimensional Array_Php 7 - Fatal编程技术网

Php 如何检查数组的一个元素是否存在于另一个数组中

Php 如何检查数组的一个元素是否存在于另一个数组中,php,arrays,multidimensional-array,php-7,Php,Arrays,Multidimensional Array,Php 7,我所尝试的: $result = array(); $A= Array ( [0] => Array ( [id] => 1946 [name] => cook [pic] => cookpic.png ) ) $B = Array ( [0] => Array ( [id] => 1944 [name] =&g

我所尝试的:

$result = array();
    $A= Array
   (
    [0] => Array
       (
        [id] => 1946
        [name] => cook
        [pic] => cookpic.png
       )

)
$B =  Array
 (
   [0] => Array
    (
        [id] => 1944
        [name] => driver
        [pic] => driver.png

    )

  [1] => Array
    (
        [id] => 934
        [name] => developer
        [pic] => developer.jpg
    )

[2] => Array
    (
        [id] => 1946
        [name] => cook
        [pic] => cookpic.png

    )

 )
我有两个数组,我使用
var\u dump
来显示它们,并且可以在上面看到它们


我想要实现的是,我想要比较两种职业,并且想要独特的
$result
数组。现在,如果Cook在$B中不存在,那么Cook应该被推入
$B
数组,这将成为
$result
,否则它不应该被推入。

执行
$result=!空(数组_相交($a,$b))
只会告诉您
$a
$b
之间是否存在公共元素

   $result = !empty(array_intersect($a, $b));
您可以使用,但它不适用于多维数组。所以你必须从头开始

编辑:

合并两个数组,然后使用array\u map应用array\u unique删除重复项

使用
stracecmp()
内置函数进行比较。然后使用
array\u push()
。 你可以使用暴力手段。但我相信你能从中得到更好的答案

$result = array();
$a = array(
    array(
        "id" => 1946,
        "name" => "Cook", // upper case C
        "pic" => "cookpic.png"
    ),

    array(
        "id" => 1946,
        "name" => "cook", // lower case c
        "pic" => "cookpic.png"
    )
);

$b = array(
    array(
        "id" => 1944,
        "name" => "driver",
        "pic" => "driver.png"
    ),
    array(
        "id" => 934,
        "name" => "developer",
        "pic" => "developer.png"
    ),
    array(
        "id" => 1946,
        "name" => "cook", // lower case c
        "pic" => "cookpic.png"
    )
);

$m = array_merge($a, $b);
$result = array_map("unserialize", array_unique(array_map("serialize", $m)));
print_r($result);
$result=array();
$A[0]=数组(“id”=>1946,“name”=>Cook,“pic”=>cookpic.png);
$B[0]=数组(“id”=>1944,“name”=>driver,“pic”=>driver.png);
$B[1]=数组(“id”=>934,“name”=>developer,“pic”=>developer.jpg);
$B[2]=数组(“id”=>1946,“name”=>cook,“pic”=>cookpic.png);
foreach($A作为$key=>$value)
{
foreach($B作为$key1=>$value1)
{
如果(!strcasecmp($value[“name”],$value1[“name”]))
{array_push($result,$value);}
}
}
回声(“”);打印(结果);

你能给我们看一下你的计划吗?我试过像
result=那样使用array\u intersect!空(数组_相交($a,$b))但它不工作,因为数组中有数组。有什么建议吗@请更新您的问题,以便每个人都可以查看您的尝试和结果,以便我们可以帮助您完成任务。对不起,你的名字有些变化。只有diff是您的
$result
只提供了非唯一的数组,但我希望
$result
中的数组应该包含
$a
$b
中的唯一数组。比如,如果我搜索“cook”,那么我的结果数组应该包含$b的所有元素,并且只有一次$a的cook
$result = array();
$a = array(
    array(
        "id" => 1946,
        "name" => "Cook", // upper case C
        "pic" => "cookpic.png"
    ),

    array(
        "id" => 1946,
        "name" => "cook", // lower case c
        "pic" => "cookpic.png"
    )
);

$b = array(
    array(
        "id" => 1944,
        "name" => "driver",
        "pic" => "driver.png"
    ),
    array(
        "id" => 934,
        "name" => "developer",
        "pic" => "developer.png"
    ),
    array(
        "id" => 1946,
        "name" => "cook", // lower case c
        "pic" => "cookpic.png"
    )
);

$m = array_merge($a, $b);
$result = array_map("unserialize", array_unique(array_map("serialize", $m)));
print_r($result);
$result=array();
$A[0]=array("id" => 1946, "name" => Cook, "pic" => cookpic.png);
$B[0]=array("id" => 1944, "name" => driver, "pic" => driver.png);
$B[1]=array("id" => 934, "name" => developer, "pic" => developer.jpg);
$B[2]=array("id" => 1946, "name" => cook, "pic" => cookpic.png);


foreach ($A as $key => $value) 
{
    foreach ($B as $key1 => $value1) 
    {
        if (!strcasecmp($value["name"], $value1["name"])) 
        {   array_push($result, $value);    }
    }
}

echo("<pre>");print_r($result);