PHP 数组默认第一个索引有点问题

今天在查找一个多级数组中的一个key时,进行了对索引的比较,但是数组的默认索引比较时遇到了点问题,数组默认索引第一个索引键值应该是0,但是和字符串比较时居然通过了,代码如下,和数字比较时又时正常的。

$a = [1, 2, 3, 4];
foreach ($a as $key => $value) {
    echo $key;

    if ($key == 'shadiao') {
        echo "shadiao\n";
    }
    if ($key == 0) {
        echo "ling\n";
    }
    if ($key == 1) {
        echo "yi\n";
    }
    if ($key == 2) {
        echo "er\n";
    }
    if ($key == 3) {
        echo "san\n";
    }
}

输出结果
0shadiao
ling
1yi
2er
3san

php
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 2

在 if ($key == 'shadiao') 时判断为true, 因为 0 == ‘字符串' 判断 一直为真
可以用 if($key === 'shadiao'){ }

5年前 评论
 var_dump(0 == 'shadiao');

输出也是true,PHP会把字符串转为整型跟0做比较

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!