如何检查 PHP 数组是关联数组还是顺序数组?

2024-07-01

PHP 将所有数组视为关联数组,因此没有任何内置函数。任何人都可以推荐一种相当有效的方法来检查数组是否“是一个列表”(只包含从0开始的数字键)?

基本上,我希望能够区分这一点:

$sequentialArray = [
    'apple', 'orange', 'tomato', 'carrot'
];

和这个:

$assocArray = [
    'fruit1' => 'apple',
    'fruit2' => 'orange',
    'veg1' => 'tomato',
    'veg2' => 'carrot'
];

Answer recommended by PHP /collectives/php Collective

由于 8.1 PHP 有一个简单的答案,array_is_list() https://www.php.net/manual/en/function.array-is-list.php.

对于遗留代码,您可以使用以下函数(将其包装在function_exists()使其便携):

if (!function_exists('array_is_list')) {
    function array_is_list(array $arr)
    {
        if ($arr === []) {
            return true;
        }
        return array_keys($arr) === range(0, count($arr) - 1);
    }
}

然后您就可以在任何 PHP 版本中使用此函数。

var_dump(array_is_list([])); // true
var_dump(array_is_list(['a', 'b', 'c'])); // true
var_dump(array_is_list(["0" => 'a', "1" => 'b', "2" => 'c'])); // true
var_dump(array_is_list(["1" => 'a', "0" => 'b', "2" => 'c'])); // false
var_dump(array_is_list(["a" => 'a', "b" => 'b', "c" => 'c'])); // false
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检查 PHP 数组是关联数组还是顺序数组? 的相关文章

  • 可以用 PHP 设置表单字段值吗?

    我使用 GET 函数从 url http index html variable value 中提取一个带有 php 的值 这是基本的东西 但是 我需要在我的表单中使用该值 通常 我会设置 或类似的东西 但是 我无法使用我正在使用的编辑器在
  • MVC:我应该在哪里格式化数据?

    我从模型 带有数据的数组 获取数据 并且需要以特定格式显示 我需要迭代数组 格式化数据然后显示它 我应该在哪里格式化数据以显示 在模型 控制器还是视图中 谢谢 对数组的迭代并显示数据是在视图中完成的 因此我也会在视图中进行格式化 如果格式化
  • 分页打印所有数据

    我在打印数据表中具有分页的所有数据时遇到问题 我已经做过研究并在此链接中发现了同样的问题 仅打印 https stackoverflow com questions 468881 print div id printarea div onl
  • 根据值过滤对象数组

    有没有办法通过可能存在于任何属性中的特定值来过滤对象数组 假设我有这个对象 var x name one swp two name two swp three name aa swp bb With Array prototype filt
  • reCaptcha 值未出现在 $_POST 中

    我正在尝试在我的网站上使用 reCaptcha 并且 recaptcha challenge field 和 recaptcha response field 没有添加到后端的 POST 数组中 但我表单中的其余变量是 有任何想法吗 我已经
  • HTACCESS 404 错误无法正常工作

    问题 在此服务器上找不到请求的 URL welcome php 此外 尝试使用 ErrorDocument 处理请求时遇到 404 Not Found 错误 事情是这样的 当我访问 www mysite com page 时它工作正常 如果
  • PHP Serialize() ― 规范 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在寻找有关 PHP serial
  • 删除一行或多行后,在 auto_increment 列上使用下一个可能的主键

    我有一个带有主键 自动增量 ID 列的表 当我删除具有最高 ID 的行 例如 ID 100 时 我想仅使用 mysql 触发器将该 ID 100 用于新行 我怎么做 当我删除时 例如 ID 1 并且最高 ID 是 100 我不想再次使用 I
  • 如果仅登录facebook,则获取facebook用户 php sdk

    我想在 php sdk 中获取当前登录的 facebook 用户 这是我尝试过的 facebook new Facebook array appId gt XXXXXXXXXXX secret gt XXXXXXXXXXXXXXXXXXXX
  • 插入正确的登录详细信息(即用户名和密码)、php 和 jquery 中的代码后,我的代码登录失败

    我有以下代码 php 和 jquery 用于学生和教师的登录 使用相同的表单进行访问 在我的系统中 管理员可以创建学生和教师 创建后 详细信息将保存到数据库中 保存的详细信息应该用于登录其管理面板 但是 问题是 当学生或教师想要使用管理员提
  • 如何在带有 PHP-FPM 和 NGINX 的 Ubuntu 18.04 LTS 中使用 Oracle Instant Client 启用 OCI8 PHP 扩展?

    我使用的是最新的 PHP 包https launchpad net ondrej archive ubuntu php https launchpad net ondrej archive ubuntu php 当我构建并安装 OCI8 扩
  • phpMyAdmin 处理请求时出错错误代码:500 错误文本:内部服务器错误[重复]

    这个问题在这里已经有答案了 当我运行 phpMyAdmin 并单击导出 导入时 我总是收到错误 处理请求时出错 错误代码 500 错误文本 内部服务器错误 操作系统 Ubuntu 18 04 我遇到了问题 我的 php 版本是7 2 实际上
  • 有 PHP 函数可以解决这个问题吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 对不起 我希望这并不奇怪或什么 我该如何修复这个编码 您遇到的情况是数据以一种编码写入并解释为另一种编码的结果 您需要确保请求输入的格
  • 控制台日志不打印函数中的变量

    尝试将变量 randomWord 打印到console log 但chrome说它没有定义 看起来它是为我定义的 为什么它不会打印到console log function strt get random word from words a
  • 在 Enterprise Architect 中为 PHP 生成 getter 和 setter

    我正在使用 Enterprise Architect 制作 UML 类图并生成 PHP5 代码 如何为某个类生成 getter 和 setter 方法 Add the lt
  • 有人可以向我指出一个好的 PHP/MySQL 加盐哈希密码实现吗?

    在阅读了盐密码哈希之后 我想为我正在构建的站点的管理区域实现一个简单的版本 如果您有任何很好的链接以及很好地实现了这个想法的代码 如果您能分享 我将不胜感激 Thanks 注册过程 用户输入密码 系统根据随机数据生成盐值 可能是时间和 PI
  • 弄清楚为什么我收到资源 ID #5 错误

    这是我的代码的一部分 回显是为了测试该值 它给了我资源 ID 5 id mysql query SELECT id FROM users WHERE firstname submittedfirstname AND lastname sub
  • 购物车商品未显示在客户视图中

    运行 Magento 1 7 2 当在管理员的客户视图中时 它显示客户购物车中的 1 件商品 但不显示详细信息 我附上了屏幕截图 有谁知道问题可能是什么 或者您能否验证它是否正常工作 以便我知道这是我的安装 Thanks 在此处查看屏幕截图
  • 逐像素改变图像的颜色

    我试图更改 png 图像的颜色 以便透明区域仍然保持透明 并为图像的其余部分提供颜色 这就是我尝试过的
  • Java将浮点字符串解析为浮点数组?

    有没有一种简单的方法将浮点字符串解析为浮点数组 我正在编写一个导入程序 它需要解析一个 ascii 文件以获取一些值 我只是想知道是否有更简单的方法来执行此操作 然后自己搜索所有空白并使用Float parseFloat s 对于每个空格分

随机推荐