Можно ли получить доступ к значениям массива PHP parse_str по индексу? - PullRequest
2 голосов
/ 02 февраля 2011

Надеюсь, это простой ответ или выполнимый каким-либо другим способом.Я хочу использовать parse_str для хранения моих значений строки запроса в массиве.

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

Доступ к данным по имени работает правильно:

echo $fields['value3'];

... но доступ по индексу не :

echo $ fields [2];

Причина, по которой я хочу получить доступ по индексу вместо имени, заключается в том, что после значения 2-го массива остальные параметры строки запроса будут сгенерированы ДИНАМИЧНО.Другими словами, для обработки я делаю - я хочу получить все параметры ПОСЛЕ 2-го.Для этого я собирался использовать простой цикл FOR, начиная с 3-го значения в массиве до sizeof (myArray) ;.

Есть идеи, как мне этого добиться?

Ответы [ 4 ]

5 голосов
/ 02 февраля 2011

Затем вы должны сгенерировать индексированный массив. Например, вы можете использовать:

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

Обратите внимание, что индекс начинается с 0.

Если вы хотите, вы также можете объединить именованный массив с индексированной версией:

$fields = array_merge($fields, array_values($fields));
$fields[2] == $fields["value3"];
0 голосов
/ 02 февраля 2011

Здесь:

$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;
}
0 голосов
/ 02 февраля 2011
$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]
}
0 голосов
/ 02 февраля 2011

Просто объедините строку с целым числом:

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

, где myInteger - ваше значение (для цикла и т. Д.). Вам нужно добавить 1, потому что ваши строки основаны на единицах.

Пример:

for ($i = 2; $i < sizeof($myArray); $i++)
{
    echo $fields["value" . $i + 1];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...