Php 如何判断数组是否包含另一个数组

Php 如何判断数组是否包含另一个数组,php,arrays,Php,Arrays,这真让人头疼 我有两个数组 $array_1 = Array ( [0] => Array ( [id] => 1 [name] => 'john' [age] => 30 ) [1] => Array ( [id] => 2 [name] => 'Amma'

这真让人头疼

我有两个数组

$array_1 = Array
(
    [0] => Array
        (
            [id] => 1
            [name] => 'john'
            [age] => 30
        )

[1] => Array
        (
            [id] => 2
            [name] => 'Amma'
            [age] => 28
        )

[2] => Array
        (
            [id] => 3
            [name] => 'Francis'
            [age] => 29
        )

)
和另一个数组

array_2 = = Array
    (
        [0] => Array
            (
                [id] => 2
                [name] => 'Amma'
            )

    )
我如何判断
$array\u 2
的id和名称与
$array\u 1[1
]的id和名称相同,并返回
$array\u 1[1]['age']


谢谢

我想你应该想找到一个拥有已知的
身份证
姓名
的人的年龄

这将有助于:

foreach ($array_1 as $val){
    if($val['id']==$array_2[0]['id'] && $val['name']==$array_1[0]['name']){
        $age = $val['age'];
    }
}
echo $age;

我假设你想找到一个已知
id
姓名的人的年龄

这将有助于:

foreach ($array_1 as $val){
    if($val['id']==$array_2[0]['id'] && $val['name']==$array_1[0]['name']){
        $age = $val['age'];
    }
}
echo $age;
使用

在我看来,使用array_diff()比简单地比较特定键更通用

Array_diff()返回一个新数组,该数组表示第一个数组中存在而第二个数组中不存在的所有条目

由于第一个数组包含3个键,而第二个数组包含2个键,因此当有2个匹配项时,array_diff()将返回一个包含额外键(age)的数组

希望这有帮助

使用

在我看来,使用array_diff()比简单地比较特定键更通用

Array_diff()返回一个新数组,该数组表示第一个数组中存在而第二个数组中不存在的所有条目

由于第一个数组包含3个键,而第二个数组包含2个键,因此当有2个匹配项时,array_diff()将返回一个包含额外键(age)的数组

希望这有帮助

试试看这个

-最好的

试试看这个


-最好的

你可以用一个简单的循环来完成。我将要编写一个函数,它接受$array_2中与$array_1中的内容匹配的第一个元素,并返回“age”:

function getField($array_1, $array_2, $field)
{
   foreach ($array_2 as $a2) {
      foreach ($array_1 as $a1) {
         $match = true;
         foreach ($a2 as $k => $v) {
            if (!isset($a1[$k]) || $a1[$k] != $a2[$k]) {
              $match = false;
              break;
            }
         }
         if ($match) {
            return $a1[$field];
         }
      }
   }
   return null;
}

你可以用一个简单的循环来完成。我将要编写一个函数,它接受$array_2中与$array_1中的内容匹配的第一个元素,并返回“age”:

function getField($array_1, $array_2, $field)
{
   foreach ($array_2 as $a2) {
      foreach ($array_1 as $a1) {
         $match = true;
         foreach ($a2 as $k => $v) {
            if (!isset($a1[$k]) || $a1[$k] != $a2[$k]) {
              $match = false;
              break;
            }
         }
         if ($match) {
            return $a1[$field];
         }
      }
   }
   return null;
}


array_2是否可以包含许多值?这看起来像是一些sql数据,可能一个联接是一个不错的选择?array_2是否可以包含许多值?这看起来像是一些sql数据,可能一个联接是一个不错的选择?使用
不好,它的优先级低于
=。意味着您必须使用
|
。或者等等,你是认真的吗?;)嘿,我只是想知道,你真的读过吗?!?哈哈,我犯了一个错误,
|
两者的优先级都低于
=
。使用
不好,它的优先级比
低=。意味着您必须使用
|
。或者等等,你是认真的吗?;)嘿,我只是想知道,你真的读过吗?!?哈哈,我犯了一个错误,
|
两者的优先级都低于
=。以前从未想过,这要简单得多。那会帮助我的,谢谢!你不觉得这和我的答案完全一样吗你太棒了。抱歉耽搁了,因为我遇到了交通堵塞;)以前从未想过,这要简单得多。那会帮助我的,谢谢!你不觉得这和我的答案完全一样吗你太棒了。抱歉耽搁了,因为我遇到了交通堵塞;)我也想知道。我没有投反对票。但你的答案是正确的。如果你不信任我,我可以投你反对票,以表明你的答案将被投“-1”的反对票(当然只用于测试),然后再次投赞成票。StasOp溢出,真的应该考虑显示谁的选票…我也很好奇。我没有投反对票。但你的答案是正确的。如果你不信任我,我可以投你反对票,以表明你的答案将被投“-1”的反对票(当然只用于测试),然后再次投赞成票。StasOp溢出,应该真正考虑谁投票谁投票。