📜  php 检查是否关联数组 - PHP (1)

📅  最后修改于: 2023-12-03 14:45:25.292000             🧑  作者: Mango

PHP 检查是否关联数组

在 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,就说明这个数组是关联数组。