2011-02-01 13 views
2

うまくいけば、これは簡単な答えです。 parse_strを使用してクエリ文字列の値を配列に格納します。PHP parse_str配列の値にインデックスでアクセスできますか?

echo $fields['value3']; 

を...しかし、インデックスを経由してアクセスすることはないを行います:名でデータにアクセス

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

は正しく動作

は、[2] $フィールドをエコー。

名前の代わりにインデックスでアクセスする理由は、2番目の配列の値の後に、残りのクエリ文字列のパラメータが動的に生成されるためです。言い換えれば、私がやっている処理について - 私は第2のものの後にすべてのパラメータを取得したい。これを行うために、配列の3番目の値からsizeof(myArray);までの簡単なFORループを使用するつもりでした。

どのように私はこれを達成することができますか?

答えて

5

あなたはその後、インデックス付きの配列を生成する必要があります。あなたは可能性の例を使用する:

あなたはまた、インデックス付きのバージョンでという名前の配列を組み合わせることができたい場合、インデックスは0

から始まること

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

注:ここでは

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

まさに私が必要としたものです。 – tresstylez

0

ちょうど整数で文字列を連結:myIntegerはあなたの値である

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

(forループなど)。文字列が1から始まるので、1を追加する必要があります。

例:

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

変数名の前に$を忘れました。 – ThiefMaster

+0

@ThiefMaster:ありがとう。私はCの背景から来て、無数の他の言語で働いています。一定。 –

+0

これで 'int 'を削除します – ThiefMaster

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] 
} 
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; 
} 
関連する問題