如何搜索一个数组中的键值是否存在于另一个数组中,使用PHP


How to search if the key value in an array exists in another array, using PHP?

我需要帮助。我有两个数组。我需要检查第一个数组中的值是否存在于第二个数组中。数组如下:

$maindata=array(array('id'=>3),array('id'=>7),array('id'=>9));
$childata=array(array('id'=>7),array('id'=>11),array('id'=>3),array('id'=>123));

这里,我需要检查第一个数组中的每个值是否存在于第二个数组中。如果是,那么每次都应该返回true else false

你可以在PHP中使用in_array()

$maindata=array( array('id'=>3),array('id'=>7),array('id'=>9) );
$childata=array( array('id'=>7),array('id'=>11),array('id'=>3),array('id'=>123) );
foreach( $maindata as $key => $value )
{
  if( in_array( $value, $childata ) )
  {
    echo true;
  }
  else
  {
    echo false;
  }
}

你也可以去掉整个if else,用一行代替。

echo ( in_array( $value, $childata ) ? true : false );
- - - - - -

引用http://php.net/manual/en/function.in-array.phphttps://code.tutsplus.com/tutorials/the -三元操作符-在php - cms - 24010

检查数组是否包含值:

if (in_array($value, $array)) {
    // ... logic here
}

检查数组是否包含某个键:

if (array_key_exists($key, $array)) {
    // ... logic here
}
资源

    in_array - PHP Manual
  • array_key_exists() - PHP Manual

以下代码仅当主数组的所有元素都存在于第二个数组时返回true,否则返回false:

$maindata=array(array('id'=>3),array('id'=>7),array('id'=>9));
$childata=array(array('id'=>3),array('id'=>7),array('id'=>11),array('id'=>123));
$match = 0;
foreach( $maindata as $key => $value ) {
  if( in_array( $value, $childata ) ) {
    $match++;
  }
}
if($match == count($maindata)){
    // return true;
} else {
    // return false;
}

使用array_intersect

if(!empty(array_intersect($childata, $maindata)))
{
   //do something
}

$result  = count(array_intersect($childata, $maindata)) == count($childata);

使用array_columnarray_intersect

$first = array_column($maindata, 'id');
$second = array_column($childata, 'id');
//If intersect done, means column are common
if (count(array_intersect($first, $second)) > 0) {
  echo "Value present from maindata in childata array.";
}
else {
  echo "No values are common.";
}