php - 区分关联数组和常规数组

标签 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"

这可以用 PHP 实现吗?

最佳答案

只需检查任意键的类型:

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

关于php - 区分关联数组和常规数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3471443/

相关文章:

php - filter_input() $_SERVER ["REQUEST_URI"] 与 FILTER_SANITIZE_URL

php - 获取用户IP地址php的权威方法

javascript - 在Javascript中查找另一个数组中数组的每个元素的所有出现

c++ - STL 容器速度与数组

php - 如果键名不存在,array_column 会返回什么?

php - 不能在子查询中使用别名

php - laravel MySQL 查询优化

javascript - 旨在从数组中删除 NaN 的代码,仍然返回 NaN JS

php - 如何将关联数组转换为一个数组

Java 哈希表和 HashMap