PHP 数组下标自动转换为整型的坑

在做项目时,上线后遇到一个 BUG,有一个数组存储了下标从 ‘01’到‘18’ 总共18组数据。上线前测试了前几组数据,没问题。上线后,在用户选择‘15’时报错,找不到这个数据。查了一下代码,数据是没问题的,只是这里使用了‘===’来判断相等:

// $code 作为参数传入
foreach ($arr as $k => $v) {
    if ($k === $code) {
        // ...
    }
}

有可能是类型出问题了,测试一下:

<?php
    //请输入你的php代码

    $arr = array(
        '01' => "hello",
        '10' => "world",
        '0' => "hello",
        6 => "hello",
        '1' => "hello",
        '3.14' => "ww",
    );

    echo '<pre/>';
    foreach ($arr as $k => $v) {
        var_dump($k);
    }
    echo ('--------------').PHP_EOL;

    var_dump('01');
    var_dump('10');

输出如下:

string(2) "01"
int(10)
int(0)
int(6)
int(1)
string(4) "3.14"
--------------
string(2) "01"
string(2) "10"

对于可以转为数字的下标,PHP 会自动将其转为数字!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值