compare two PHP arrays by key

后端 未结 3 1448
南笙
南笙 2021-01-13 05:17

What\'s the fastest way to compare if the keys of two arrays are equal?

for eg.

array1:          array2:

\'abc\' => 46,     \'abc\' => 46,
\'d         


        
相关标签:
3条回答
  • 2021-01-13 05:49

    How about using === instead? You know, the operator for equality?

    $array1 = array(
        'abc' => 46,
        'def' => 134,
        'xyz' => 34
    );
    
    
    $array2 = array(
        'abc' => 46,
        'def' => 134,
        'xyz' => 34,
    );
    
    
    var_dump( array_keys( $array1 ) === array_keys( $array2 ) );
    
    0 讨论(0)
  • 2021-01-13 05:58

    Use array_keys to get array of keys and then use array_diff.

    OR

    Use array_diff_key directly.

    0 讨论(0)
  • 2021-01-13 06:09

    Use array_diff_key, that is what it is for. As you said, it returns an empty array; that is what it is supposed to do.

    Given array_diff_key($array1, $array2), it will return an empty array if all of array1's keys exist in array2. To make sure that the arrays are equal, you then need to make sure all of array2's keys exist in array1. If either call returns a non-empty array, you know your array keys aren't equal:

    function keys_are_equal($array1, $array2) {
      return !array_diff_key($array1, $array2) && !array_diff_key($array2, $array1);
    }
    
    0 讨论(0)
提交回复
热议问题