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

PHP中如何将含重复键的字符串转为关联数组并保留首个键值

解决方法

你只需要在循环赋值时增加判断逻辑:如果当前遍历到的键是m且已经在关联数组中存在,就跳过本次赋值即可,其他参数的赋值逻辑保持不变。

修改后的代码如下:

$n = preg_match_all('/(\w+)=([^&$]*)/', $_SERVER['QUERY_STRING'], $matches);
$params = [];
for($i=0; $i<$n; $i++)
{
    $currentKey = $matches[1][$i];
    $currentValue = $matches[2][$i];
    // 仅当键不是m,或者m还未被赋值时,才写入数组
    if ($currentKey !== 'm' || !isset($params[$currentKey])) {
        $params[$currentKey] = $currentValue;
    }
}
var_dump($params);

执行后输出结果为:

array (size=4)
  'foo' => string 'bar' (length=3)
  'foz' => string 'baz' (length=3)
  'fom' => string 'bam' (length=3)
  'm' => string 'q50' (length=3)

这个方案不需要提前终止循环,不管m出现在查询字符串的任何位置,都能正确保留第一个出现的m的值,其余参数的处理逻辑和之前保持一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 20:06:03