2016-03-11 93 views
0

我有一個數組$categories,如下所示;如何在父數組中插入一個新的數組元素在foreach中

Array 
    (
     [0] => Array 
      (
       [category_id] => 0 
      ) 

     [1] => Array 
      (
       [category_id] => 3 
      ) 
    ) 

我想在foreach中應用一些條件如下;

注意:以下條件不起作用;

foreach ($categories as $key=> $category) 
{ 
    if($category['category_id']===0) 
    { 
     $categories[$key]['category_name'] = 'NA'; 
    } 
    else 
    { 
     $categories[$key]['category_name'] = 'something'; 
    } 
} 

所以我預計結果將變成;

Array 
    (
     [0] => Array 
      (
       [category_id] => 0 
       [category_name] => NA 
      ) 

     [1] => Array 
      (
       [category_id] => 3 
       [category_id] => something 
      ) 
    ) 
+3

正常工作對我來說:https://3v4l.org/FpMm1問題出在哪裏? – Rizier123

+2

可能'0'是你正在用'==='運算符檢查的字符串,它將字符串與其數據類型匹配。請檢查它。在當前情況下使用「0」。 – Yash

+0

@Yash那麼解決方案是什麼? –

回答

2

在陣中還有可能0可能是字符串你與===運營商將與它的數據類型也匹配的字符串檢查。

如果需要,您可以使用gettype($value)檢查其數據類型。

對於當前的問題,試試這個:

/* Compare value without checking its datatype */ 
if($category['category_id'] == 0) /* replace === to == */ 
{ 
    $categories[$key]['category_name'] = 'NA'; 
} 
else 
{ 
    $categories[$key]['category_name'] = 'something'; 
} 
+0

再次:請參閱https://3v4l.org/rQBKh,不,根據print_r的輸出,鍵不可能是一個字符串,因爲php會將其轉換爲整數。如果你不相信...給我看;-) – VolkerK

+0

Yeaa @VolkerK,我仍然不知道,** 0 **是如何在字符串因爲DB'category_id'的數據類型是int( 11)。 –

+0

@VolkerK如果你聲明字符串數組,例如'$ str_arr = array('0','1','2');'。請檢查輸出。 PHP數組索引首先試圖處理'數組數組'然後'關聯數組'。 – Yash

相關問題