可以通过索引访问PHP parse_str数组值吗?

时间:2011-02-01 21:36:23

标签: php arrays parsing function query-string

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

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

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

echo $fields['value3'];

...但是通过索引访问

  

echo $ fields [2];

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

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

4 个答案:

答案 0 :(得分:5)

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

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

请注意,索引从0开始。

如果需要,还可以将命名数组与索引版本结合使用:

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

答案 1 :(得分:0)

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

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

其中myInteger是你的值(for循环等)。您需要添加1,因为您的字符串是从一开始的。

示例:

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

答案 2 :(得分:0)

$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 :(得分:0)

下面:

$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;
}