📅  最后修改于: 2023-12-03 14:45:25.292000             🧑  作者: Mango
在 PHP 中,有时需要判断一个数组是不是关联数组。关联数组指的是,数组的 key 是字符串而不是数字。
is_array()
和 count()
我们可以使用 is_array()
函数和 count()
函数相结合来判断一个数组是不是关联数组。
<?php
function is_associative_array($arr) {
if (!is_array($arr)) {
return false;
}
$keys = array_keys($arr);
return count(array_filter($keys, 'is_string')) > 0;
}
$arr1 = array(1, 2, 3);
$arr2 = array('one' => 1, 'two' => 2, 'three' => 3);
var_dump(is_associative_array($arr1)); // 输出 bool(false)
var_dump(is_associative_array($arr2)); // 输出 bool(true)
以上代码定义了一个函数 is_associative_array()
,该函数接收一个数组作为参数,判断该数组是不是关联数组。如果是关联数组,返回 true
,否则返回 false
。
array_keys()
我们可以使用 array_keys()
函数来获取一个数组的所有 key,然后遍历这些 key。如果找到了一个非数字的 key,就说明这个数组是关联数组。
<?php
function is_associative_array($arr) {
if (!is_array($arr)) {
return false;
}
foreach (array_keys($arr) as $key) {
if (!is_numeric($key)) {
return true;
}
}
return false;
}
$arr1 = array(1, 2, 3);
$arr2 = array('one' => 1, 'two' => 2, 'three' => 3);
var_dump(is_associative_array($arr1)); // 输出 bool(false)
var_dump(is_associative_array($arr2)); // 输出 bool(true)
以上代码定义了一个函数 is_associative_array()
,该函数接收一个数组作为参数,判断该数组是不是关联数组。如果是关联数组,返回 true
,否则返回 false
。该函数通过 array_keys()
函数获取一个数组的所有 key,然后遍历这些 key 并判断是否是数字。如果找到了一个非数字的 key,就说明这个数组是关联数组。
foreach
循环我们也可以使用 foreach
循环遍历一个数组,判断数组的每个元素的 key 是否是数字。
<?php
function is_associative_array($arr) {
if (!is_array($arr)) {
return false;
}
foreach ($arr as $key => $value) {
if (!is_numeric($key)) {
return true;
}
}
return false;
}
$arr1 = array(1, 2, 3);
$arr2 = array('one' => 1, 'two' => 2, 'three' => 3);
var_dump(is_associative_array($arr1)); // 输出 bool(false)
var_dump(is_associative_array($arr2)); // 输出 bool(true)
以上代码定义了一个函数 is_associative_array()
,该函数接收一个数组作为参数,判断该数组是不是关联数组。如果是关联数组,返回 true
,否则返回 false
。该函数通过 foreach
循环遍历一个数组,判断数组的每个元素的 key 是否是数字,如果找到了一个非数字的 key,就说明这个数组是关联数组。