2011-09-16 5 views
1

私はいつも複雑な配列を吸っていますが、私の脳には何かがあって、理解できなくなっているはずです。私はこの例を本当にシンプルにしようとしていますので、私たちは話題を離れません。私は、それぞれのファイル名を表すために数字を使用するには、このコードを使用します。私は['01' ] $ mod_numsを使用する場合連想配列の問題

$mod_nums = array('1' => $input_zip_path . '01_mod_1.0.2.zip', 

        '2' => $input_zip_path . '02_mod_1.0.1.zip', 
); 

は、だから、そのファイルへのパスが表示されます。私はこのような$ mod_nums値を配列に入れたスクリプトから配列を持っています。

$files_to_zip = array(
    $mod_nums['1'], 
    $mod_nums['2'] 
); 

これはうまくいきました。今度は$ _POSTの値を追加して1,2などの数値を入力し、後で1,3,6,12のように$ mod_nums配列に追加します。だから私は、これらの投稿の値のため、爆発を使用:

$explode_mods = explode(",", trim($_POST['mods'])); 

は、今の私の脳と過ごした時間をラッキングされ、それが仕事を得ることができない大きな問題のために....私はまだであることを$ files_to_zipのために必要$ mod_numsの値を表示します。だからそれは次のようになります:

$files_to_zip = array(HAVE $_POSTED VALUES IN HERE); 

私はそれが理にかなっています。 $ files_to_zipが配列形式で残り、$ mod_nums配列からzipファイルへのファイルパスを取得し、それを正しく表示するように正しく表示する必要があります。

$ files_to_zip = array( '01_mod_1.0.2.zip '、' 02_mod_1.0.1.zip ');

投稿された数字は、$ files_to_zip変数の配列形式で表示されます。理にかなっている?つまり、動的な値を持つ配列が必要です。私は何年も前に似た何かに働いていた時に感謝:)

EDIT

ふうに私はメモリから自分自身をそれを考え出しました。これは難しいようですが、そうではありません。私はforeachのを使用し、そのような配列に変数を割り当てる必要がありました:

$blah = array(); 

foreach ($explode_mods as $value) 
{ 
    $blah[] = $mod_nums[$value]; 
} 

その後、私はちょうど$何とかに$ files_to_zipを割り当てる:

$files_to_zip = $blah; 

作品を完全に:)私はどのように動的に忘れてしまいました値を配列に代入する。

+1

簡単に誰のために...? – awm

+0

私は他のスクリプトがこれをたくさん使っているのを見ました。文字列のコンマで値が区切られた$ _POSTフィールドの配列に、基本的に動的な値が必要です。 –

+0

申し訳ありませんが、あなたの質問はあまり明確ではありません。 '$ _POST ['mods']にはどのような種類の値が入っていますか? '$ files_to_zip'を既に配列として定義していますが、どうして何かを変更する必要がありますか?あなたが実際にやりたいことは、foreachを使用してPOSTデータをループすることです。さらなる情報なしで言うことはできません。 – JohnP

答えて

0
// filenames array 
$mod_nums = array('1' => $input_zip_path . '01_mod_1.0.2.zip', 
        '2' => $input_zip_path . '02_mod_1.0.1.zip', 
); 

// mod_num keys 
$explode_mods = explode(',', trim($_POST['mods'])); 

// array to hold filenames 
$files_to_zip = array(); 

// loop over all the mod_num keys submitted via POST 
foreach($explode_mods as $key){ 
    // save the filename to the corresponding array 
    $files_to_zip[] = $mod_nums[$key]; 
} 
+0

母私はそれを理解した後、あなたが正しく答えたが、理解のための良い仕事:) –

+0

@ジョン・ジェンキンス:それはあなた自身がすでにそれを理解したことは素晴らしいです。そうすれば、あなたはそれをもう一度忘れることはほとんどありません。答えの左上にある投票数の下にある空のチェックをクリックして、今すぐ答えを受け入れるようにしてください。そうすれば、この質問は解決済みとマークされます。詳細については、[回答の受付方法](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)を参照してください。 – Shef

+0

ありがとう:)私はあなたの答えを選びました、私はこの質問を正しく完了しましたか? –

0

たぶん私は右のあなたを理解やりなさい、これはちょうどこのよう$files_to_zipにentrysを追加するために、単純なのforeachループではありません。

$explode_mods = explode(",", trim($_POST['mods'])); 

foreach($explode_mods as $k){ 
    $files_to_zip[] = $mod_nums[$k]; 
} 
+0

私はそれを理解した後、はい、あなたが正しく答えたが、理解のための良い仕事:) –