2013-11-22 18 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