2013-11-22 33 views
0

增加一些價值我有數組這樣PHP上的具體位置在多維數組

 
Array ([0] =>
Array (
[user_id] => 21
[email] => [email protected]
[brand] => Array ([0] => GOFUEL_W [1] => GOFUEL_USD_W))
[1] =>
Array (
[user_id] => 22
[email] => [email protected]
[brand] => Array ([0] => GOFUEL_W))
[2] =>
Array (
[user_id] => 23
[email] => [email protected]
[brand] => Array ([0] => GOFUEL_W [1] => GOFUEL_USD_W [2] => GOFUEL_BGD_W)))


我想找到USER_ID 22,並把品牌這個值「GO_FUEL_SGD_W」,我應該怎麼做,所以視圖陣列的看起來像這樣

 
Array ([0] =>
Array (
[user_id] => 21
[email] => [email protected]
[brand] => Array ([0] => GOFUEL_W [1] => GOFUEL_USD_W))
[1] =>
Array (
[user_id] => 22
[email] => [email protected]
[brand] => Array ([0] => GOFUEL_W => [1] =>GO_FUEL_SGD_W))
[2] =>
Array (
[user_id] => 23
[email] => [email protected]
[brand] => Array ([0] => GOFUEL_W [1] => GOFUEL_USD_W [2] => GOFUEL_BGD_W)))

回答

1

一個簡單的foreach循環將做的工作:

foreach($myarray AS &$subarray) { 
    if($subarray['user_id'] == 22) { 
     $subarray['brand'][] = "GO_FUEL_SGD_W"; 
     break; 
    } 
} 

工作例如:http://3v4l.org/8aQMj

+0

這不會做這件事,因爲你只會在'foreach'循環內改變元素的__copy__。使用'&'或訪問索引 –

+0

的父數組@AlmaDo Yup剛剛更新,以及工作示例 – jszobody

0
$array= //your array; 
foreach($array as $x){ 
    if($x['user_id']=='22'){ 
     $x['brand'][]='GO_FUEL_SGD_W'; 
     break; 
    } 

} 
1

只需使用循環:

foreach($array as &$item) 
{ 
    if(array_key_exists('user_id', $item) && 
     $item['user_id']==22 && 
     array_key_exists('brand', $item) && 
     !in_array('GO_FUEL_SGD_W', $item['brand'])) 
    { 
     $item['brand'][] = 'GO_FUEL_SGD_W'; 
    } 
} 
1

您將需要遍歷數組過來找你要搜索的元素。

foreach ($array as &$element) { 
    if ($element['user_id'] != 22) 
     continue; 

    $element['brand'][] = "GO_FUEL_SGD_W"; 
    break; 
} 

隨着continue;所有元素將被跳過,誰擁有$element['user_id'] != 22(所以沒有continue;後的代碼將被應用到它們!)。

此外,一旦達到要求的元素並進行修改,它將結束循環,這要歸功於break;

+0

它將添加到數組中的每個元素 – Bhadra

+1

@Bhadra我想你錯過了'continue'語句。 – Oldskool

+0

我想你是缺少一個還有 – Bhadra