2014-04-10 75 views
1

我有這樣的陣列file_months當一個新的月份其添加到文件夾改變:到一個動態數組添加元素與array_push

Array 
(
    [0] => 01 
    [1] => 02 
    [2] => 03 
) 

我要的是在選擇選項來顯示所有的月份,所以我試過這個:

$nbr_mois = array('0'=>'01','1'=>'02','2'=>'03','3'=>'04','4'=>'05','5'=>'06','6'=>'07','7'=>'08','8'=>'09','9'=>'10','10'=>'11','11'=>'12'); 
foreach ($nbr_mois as $key => $value) { 
    if($value!=$file_months) 
array_push($file_months,$value); 
} 

但它不會添加一個缺失的月份,它將它們全部添加!就像這樣:

Array 
(
    [0] => 01 
    [1] => 02 
    [2] => 03 
    [3] => 01 
    [4] => 02 
    [5] => 03 
    [6] => 04 
    [7] => 05 
    [8] => 06 
    [9] => 07 
    [10] => 08 
    [11] => 09 
    [12] => 10 
    [13] => 11 
    [14] => 12 
) 
+2

你就不能做到'$ file_months = $ nbr_mois'? – pNre

+0

+1,因爲我閱讀後必須更換短褲! – user3350731

+1

您正在將值與數組進行比較。使用'array_search'函數。 – Floris

回答

3

我認爲array_merge會爲你工作,而無需循環。

2

檢查鍵已經存在

$nbr_mois = array('0'=>'01','1'=>'02','2'=>'03','3'=>'04','4'=>'05','5'=>'06','6'=>'07','7'=>'08','8'=>'09','9'=>'10','10'=>'11','11'=>'12'); 
foreach ($nbr_mois as $key => $value) { 
if(!array_key_exists($key, $arrayname) { 
    if($value!=$file_months) 
     array_push($file_months,$value); 
    } 
} 
1

或者只需更換

if($value!=$file_months) 
    array_push($file_months,$value); 

if($value!=$file_months[$key]) 
    $file_months[$key] = $value; 
+0

好點。 OP沒有說明他是否想要追加不具有差異性的值,還是希望他們被覆蓋。 – amenadiel

0

使用in_array ..

而不是

if($value!=$file_months) { 

} 

使用這個..

如下圖所示
if(!in_array($value,$file_months)) { 

} 
0

使用in_array()方法:的

if(!in_array($value, $file_months)) 

代替

if($value!=$file_months)