代码之家  ›  专栏  ›  技术社区  ›  zaf

查询字符串处理

  •  4
  • zaf  · 技术社区  · 14 年前

    在执行查询字符串处理时,我偶然发现:

    <?php
    $in='a=6&b=7&8=c';
    parse_str($in,$qs);
    $out=array_merge($qs,array('9'=>'d'));
    print_r($out);
    ?>
    

    Array
    (
        [a] => 6
        [b] => 7
        [0] => c
        [1] => d
    )
    

    而不是:

    Array
    (
        [a] => 6
        [b] => 7
        [8] => c
        [9] => d
    )
    

    我理解为什么会发生这种情况(“8”和“9”被视为数字键),但我不高兴我必须这么做。

    一定有办法保持简单。如何切块、切块和烹饪查询字符串?

    4 回复  |  直到 14 年前
        1
  •  1
  •   Yehonatan    14 年前

    为什么不在一个数组上做一个简单的循环,然后检查密钥是否存在?

        2
  •  2
  •   Mark Baker    14 年前

    考虑对数组使用UNION运算符

    $out=$qs+array('9'=>'d');
    print_r($out);
    
        3
  •  1
  •   Your Common Sense    14 年前

    我正在使用http\u build\u query()函数。
    不要对查询字符串/任何请求变量使用数字键。

        4
  •  1
  •   Daniel Vandersluis    14 年前

    问题是 array_merge var_dump 你的 $qs 8 ). 或者不使用数字键,或者直接按数组而不是使用 数组\u合并 :

    $in = 'a=6&b=7&8=c';
    parse_str($in,$qs);
    $out = $qs;
    $out[9] = 'd';
    

    请注意 parse_str $a 将是6岁和 $b