简体   繁体   中英

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

I need a help. I have two arrays. I need to check if the values in first array are present in second or not. The arrays are as:

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

Here, I need to check if each value from first array is present inside second array or not. If yes, then should return true else false at each time.

Here you go, you can use the in_array() for 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) );

foreach( $maindata as $key => $value )
{
  if( in_array( $value, $childata ) )
  {
    echo true;
  }
  else
  {
    echo false;
  }
}

You could also remove the whole if else and replace with a single line.

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

Reference - http://php.net/manual/en/function.in-array.php https://code.tutsplus.com/tutorials/the-ternary-operator-in-php--cms-24010

To check if an array contains a value:

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

To check if an array contains a certain key:

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

Resources

Following code will return true only if all elements of main array exists in second array, false otherwise:

$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;
}

Use array_intersect

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

or

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

Use array_column and array_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.";
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM