2011-12-27 14 views
0

私は必要なすべてのデータを$ _POST配列に格納しています。PHP foreach配列(分割インデックス)

Array (
    [0_45_115] => 01 
    [0_46_115] => 01 
    [0_47_115] => 01 
    [0_48_115] => 01 
    [0_49_115] => 01 
    [0_50_115] => 01 
    [0_51_115] => 01 
    [0_52_115] => 01 
    [0_53_115] => 01 
    [0_54_115] => 01 
    [0_55_115] => 01 
    [0_56_115] => 01 
    [0_57_115] => 01 
    [0_58_115] => 01 
    [0_59_115] => 01 
    [0_60_115] => 01 
    [0_61_115] => 01 
    [0_62_115] => 01 
    [0_63_115] => 01 
    [0_64_115] => 01 
    [0_65_115] => 01 
    [0_66_115] => 01 
    [0_67_115] => 01 
) 

iはフォーム(name attr)から投稿するインデックスはアンダースコアを持っていない:私は配列をprint_r場合

は、私はこのような何かを参照してください。例:

<input type="text" name="0 45 115" value="" /> 

これを忘れてしまいましょう。

0_45_115インデックスは私に更新したい、またはデータベースに新しい行を挿入したいneccesseryデータをすべて提供します。その価値は、私が望む情報を私に見せてくれるでしょう。

問題は、配列の管理方法がわかりません。たぶん私はforeachメソッドを使用する必要があり、私はsplit関数を使用して各行のインデックスを分割します。それから私はデータベースの挿入/更新のために他のすべての作業を行います。

foreachを使用して、$_POST配列の情報(index-data)を取得するにはどうすればよいですか。

答えて

1

空間がPHP仕様あたりアンダースコアに変換されます。詳細はthis pageを参照してください。具体的には、この文字列をページ内で検索します。変数名のドットとスペースは下線に変換されます。

私は右のアプローチは、ループに代わるものとして

foreach($_POST as $key => $value) 
{ 
    $parts = explode('_', $key); //split your $key 
    //then deal with corresponding $value 
} 
1

array_keys()機能を参照してください。
split()関数を使用してキーを操作し、必要なデータを取得するよりも、入力配列のすべてのキーを返します。例えば

$keys = array_keys($yourArray); 
foreach($keys as $k) { 
    $data = split("_", $k); 
    print $data[0]; 
    print $data[1]; 
    print $data[2]; 

} 
+0

これは私が探しているものだと思われます。 mr gualanoのアンダースコアの説明がありますか? –

+0

私はsplit()関数の少しの例で私の答えを編集しました。 –

1
foreach($yourArray as $k => $v) { 

    $keys = explode("_", $k) // for first iterate you will get array('0','45','115') 

} 
+0

あなたのソリューションはより良いです.. 私はオブジェクト指向のPHPとPDOを学ばなければなりませんが、自由な時間は不幸です.. :( 答えのためのThx –

0

だろう、あなたはarray_map使用することができると思う:唯一のPHPので

array (
    array (
    0 => '0', 
    1 => '45', 
    2 => '115', 
), 
    array (
    0 => '0', 
    1 => '46', 
    2 => '115', 
), 
    array (
    0 => '0', 
    1 => '47', 
    2 => '115', 
), 
    ... 

array_map(function ($str) {return explode('_', $str);}, 
      array_keys($_POST)); 

の検索結果を5.3以降では、言語レベルで匿名の関数があり、ループは以前のPHPバージョンをサポートする必要がある場合は、より良い選択です。それ以外の場合は、ちょうど醜いcreate_functionを使用する必要があります。