2011-09-16 69 views
1

我總是在複雜的陣列中吮吸,腦中一定有東西阻止我理解它們。我會盡量讓這個例子非常簡單,所以我們不會脫離主題。我用這個代碼用數字來表示每個文件名:聯想陣列的問題

$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 ['01' ],將顯示的路徑文件。我從劇本的數組,把這些$ mod_nums值到一個數組,像這樣:

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

這工作得很好。現在我想添加一個$ _POST值,以便我可以輸入像1,2和其他數字的數字,例如,我將它們添加到$ mod_nums數組中,比如1,3,6,12。所以我用那些張貼值的爆炸:

$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變量的數組格式顯示。合理?總之,我需要一個數組來獲得動態值。謝謝:)

編輯

呼我想通了自己從內存中,當我類似很多年前制定的東西。這看起來很難,但事實並非如此。我不得不使用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

也許我沒有帶你瞭解正確的,但不會這只是一個簡單的foreach循環到entrys添加到$files_to_zip這樣的:

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

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

哈哈是的,你們大家在解決它之後正確回答了它,但理解起來很好:) –