【问题标题】:Possible to access PHP parse_str array values by index?可以通过索引访问 PHP parse_str 数组值吗?
【发布时间】:2011-02-01 21:36:22
【问题描述】:

希望这是一个简单的答案或以其他方式可行。我想使用 parse_str 将我的查询字符串值存储在一个数组中。

$querystring = "value1=SKIP&value2=SKIP&value3=GET&value4=GET";
parse_str($querystring, $fields);

按名称访问数据正常工作:

echo $fields['value3'];

...但通过索引访问

回声 $fields[2];

我想通过索引而不是名称访问的原因是因为在第二个数组值之后,其余的查询字符串参数将动态生成。换句话说,对于我正在做的处理——我想在第二个参数之后获取所有参数。为此,我将使用一个简单的 FOR 循环,从数组中的第三个值开始到 sizeof(myArray);。

有什么想法可以做到这一点吗?

【问题讨论】:

    标签: php arrays parsing function query-string


    【解决方案1】:

    然后你必须生成一个索引数组。例如,您可以使用:

    $indexed = array_values($fields);
    print $indexed[2];  // eqivalent to $fields["value3"];
    

    注意索引是从0开始的。

    如果您愿意,您还可以将命名数组与索引版本结合起来:

    $fields = array_merge($fields, array_values($fields));
    $fields[2] == $fields["value3"];
    

    【讨论】:

      【解决方案2】:
      $i = 0;
      foreach ($fields as $key => $value) {
          $fields[$i] = $value; //or just put your code here, and use $i
          $i++;
      }
      
      for ($j = 2; $j < $i; $j++) {
          //do something with $fields[$j]
      }
      

      【讨论】:

        【解决方案3】:

        这里:

        $querystring = "value1=SKIP&value2=SKIP&value3=GET&value4=GET";
        parse_str($querystring, $fields);
        $arr = array_slice($fields, 2, count($fields), true);
        
        foreach($arr as $key=>$value) {
                echo $key . "=>" . $value;
        }
        

        【讨论】:

        • 这个答案缺少教育解释。
        【解决方案4】:

        只需将字符串与整数连接:

        echo $fields["value" . $myInteger + 1];

        myInteger 是您的值(for 循环等)。您需要添加 1,因为您的字符串是基于 1 的。

        例子:

        for ($i = 2; $i < sizeof($myArray); $i++)
        {
            echo $fields["value" . $i + 1];
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-05-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-04-25
          • 1970-01-01
          • 2016-03-25
          相关资源
          最近更新 更多