php - 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 之外,一切都有效,有没有办法让它工作并被视为一个价值?
先感谢您。
解决方案
您很可能会通过 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
。
推荐阅读
- r - 按妈妈年龄计算的平均孩子数?
- c++ - 将天转换为年秒和分钟
- javascript - Angular 9子路由模块未加载
- wordpress - 添加来自 Learndash API 的缺失响应
- angular - 使用 Mapquest API 进行 Angular/Jest 单元测试
- excel - 确定 Excel 实例和工作簿是否具有焦点
- php - 二维数组的开关元素
- android - 检查Android前台服务是否在应用重启时处于活动状态?
- ios - iOS - 如何使用谷歌云存储在 gitHub 工作流中的运行时注入 gc_keys.json 文件?
- javascript - 如果在循环中满足条件,则对数组求和