You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP按前缀子串对扁平数组元素分组的代码问题咨询

问题排查
  • 函数使用错误:in_array() 函数的作用是判断给定值是否存在于数组中,要求第二个参数必须为数组类型。你的代码里传入的第二个参数是字符串类型的$value,逻辑完全错误。要判断字符串是否包含指定子串,PHP 8.0+可使用str_contains()函数,低版本PHP可使用strpos()做判断。
  • 输出方式错误:PHP中不能直接用echo输出数组,否则只会输出Array字符串并抛出警告,要查看数组内容需使用print_r()或var_dump()函数。
正确实现方案

PHP 8.0+ 版本(官方推荐)

$check_query = ['standard-186', 'upgrade-186', 'standard-184', 'upgrade-184'];
$range_array = [];
$spec_array = [];

foreach($check_query as $value) {
    if (str_contains($value, "standard")) {
        array_push($range_array, $value);
    } elseif (str_contains($value, "upgrade")) {
        array_push($spec_array, $value);
    }
}

// 输出数组内容
print_r($range_array);
print_r($spec_array);

PHP 7及更低版本兼容方案

使用strpos做判断,注意必须用!== false做严格比较,避免子串出现在字符串开头时判断逻辑失效:

$check_query = ['standard-186', 'upgrade-186', 'standard-184', 'upgrade-184'];
$range_array = [];
$spec_array = [];

foreach($check_query as $value) {
    if (strpos($value, "standard") !== false) {
        array_push($range_array, $value);
    } elseif (strpos($value, "upgrade") !== false) {
        array_push($spec_array, $value);
    }
}

// 输出数组内容
print_r($range_array);
print_r($spec_array);

运行后$range_array返回结果为预期的['standard-186', 'standard-184'],$spec_array返回结果为['upgrade-186', 'upgrade-184']。

内容的提问来源于stack exchange,提问作者monsaic123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 22:24:03