首页 > 解决方案 > php 使用 0 键作为 URL 中的值来检索数据

问题描述

所以最近我正在修复一个旧系统,它使用数组中的键来检索某些数据。

这是包含多个汽车品牌的数组,键用于过滤某些内容,因此 URL 看起来像http://example.com/page?brands=1&foo=bar

public static $carBrandGroups = [
    0 => 'Volvo',
    1 => 'BMW',
    2 => 'Renault',
    3 => 'Tesla',
    4 => 'Opel',
    5 => 'Peugeot',
    6 => 'Toyota',
    7 => 'Mercedes',
    8 => 'Honda',
    9 => 'Fiat',
]

现在系统工作并检索所有内容,除了传递 0 时,这是合乎逻辑的,因为 0 被认为是空的。我相信一定有办法,是吗?

传递附加信息的函数如下所示:

public static function getCarBrandGroup($modelNumber)
{
    if ($modelNumber == 999) {
        return 'Other';
    }

    if (isset(self::$carBrandGroups[$modelNumber[0]])) {
        return self::$carBrandGroups[$modelNumber[0]];
    }

    return 'Unknown';
}

modelNumber 是三位数,所以所有以 0 开头的都是沃尔沃车型,所以 001 是沃尔沃 V40,101 是宝马 X6 等等......

就像我上面所说的,除了 0 之外,一切都有效,有没有办法让它工作并被视为一个价值?

先感谢您。

标签: phplaravel

解决方案


您很可能会通过 integer1而不是 string 001。如果您知道每个代码应该正好有三位,那么您可以强制使用零填充重新格式化并同时转换为字符串sprintf()

public static function getCarBrandGroup($modelNumber)
{
    $modelNumber = sprintf('%03d', $modelNumber);
    if ($modelNumber === '999') {
        return 'Other';
    }
    if (isset(self::$carBrandGroups[$modelNumber[0]])) {
        return self::$carBrandGroups[$modelNumber[0]];
    }
    return 'Unknown';
}

现在,您可以通过(string) "001"(int) 1


推荐阅读