Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Check if all of several PHP array keys exist

Tags:

arrays

php

I am currently using the following:

    $a = array('foo' => 'bar', 'bar' => 'foo');

    if(isset($a['foo']) && isset($a['bar'])){
      echo 'all exist';
    }

However, I will have several more array keys than foo and bar that I must check for. Is there a more efficient way to check for each required key than adding an isset for each required entry?

like image 364
Mooseman Avatar asked Jun 07 '13 01:06

Mooseman


2 Answers

You can combine them in a single isset() call:

if (isset($a['foo'], $a['bar']) {
    echo 'all exist';
}

If you have an array of all the keys that are required, you can do:

if (count(array_diff($required_keys, array_keys($a))) == 0) {
    echo 'all exist';
}
like image 94
Barmar Avatar answered Oct 14 '22 19:10

Barmar


You could create an array of all the entries you want to check, then iterate over all of them.

$entries = array("foo", "bar", "baz");
$allPassed = true;

foreach($entries as $entry)
{
    if( !isset( $a[$entry] ) )
    {
        $allPassed = false;
        break;
    }
}

If $allPassed = true, all are good - false means one or more failed.

like image 45
Surreal Dreams Avatar answered Oct 14 '22 18:10

Surreal Dreams