区分关联数组与常规数组

mač*_*ček 3 php arrays associative-array

无需更改函数签名,我希望PHP函数在给定关联数组而不是常规数组时表现不同.

注意:您可以假设数组是同质的.例如,array(1,2,"foo" => "bar")不被接受,可以忽略.

function my_func(Array $foo){
  if (…) {
    echo "Found associated array";
  }
  else {
    echo "Found regular array";
  }
}


my_func(array("foo" => "bar", "hello" => "world"));
# => "Found associated array"

my_func(array(1,2,3,4));
# => "Found regular array"
Run Code Online (Sandbox Code Playgroud)

这可能用PHP吗?

Art*_*cto 6

只需检查任何键的类型:

function is_associative(array $a) {
    return is_string(key($a));
}

$a = array(1 => 0);
$a2 = array("a" => 0);

var_dump(is_associative($a)); //false
var_dump(is_associative($a2)); //true
Run Code Online (Sandbox Code Playgroud)