2016-05-26 3 views
0

У меня есть массив, как этотДобавление же ключа и значения ассоциативного массива PHP

Array 
(
    [0] => Array 
     (
      [catid] => 1 
      [percentage] => 4 
      [name] => Access Control 
     ) 

    [1] => Array 
     (
      [catid] => 7 
      [percentage] => 1 
      [name] => Audio Video 
     ) 

    [2] => Array 
     (
      [catid] => 5 
      [percentage] => 1 
      [name] => Home Automation 
     ) 

) 

Тхо этот массив я хочу добавить пару catid, percentage и name в качестве другого массива на следующий ключа, например:

[3] => Array 
      (
       [catid] => 7 
       [percentage] => 0 
       [name] => 'some name' 
      ) 

Вот мой код

//another array 
$id=array('1','2',....n); 
//$data is my original array 
foreach($id as $key=>$value){ 
     $data[]['catid']=$value; 
     $data['percentage'][]='0'; 
     $data['name'][]='Some name'; 
} 

Но это даст неправильный вывод.

+0

array_push ($ старый, $ new); пусть у вас есть старый, как основной, и вы хотите добавить новый в последний из основных. –

ответ

1
//another array 
$id=array('1','2',....n); 
$i = count($data); 
//$data is my original array 
foreach($id as $key=>$value){ 
     $data[$i]['catid']=$value; 
     $data[$i]['percentage']='0'; 
     $data[$i]['name']='Some name'; 
     $i++; 
} 
+0

Этот обработанный, но последний ассоциативный массив отсутствует в массиве orignal –

+0

Изменено $ i = count ($ data) теперь его ворвано –

+0

Да. Ты прав. благодаря – splash58

0

Единственное, что вам нужно сделать, это:

$yourArray[] = [ 
    'catid' => 7, 
    'percentage' => 0, 
    'name' => 'some name' 
]; 
0

Вы строите неверном массива:

Это выталкивает НОВЫЙ элемент на главную $data массива, а затем присваивает ключ/значение значения catid/$ для этого нового элемента:

$data[]['catid']=$value; 

Затем вы создаете новый верхний уровень percentage, и нажмите ноль в него, и повторы имя:

$data['percentage'][]='0'; 
    $data['name'][]='Some name';' 

Вы не можете создать несколько ключей массива, как это. Вам необходимо создать временный массив, а затем нажмите все это на основной массив:

$temp = array(); 
$temp['catid'] = $value; 
$temp['percentage'] = 0; 
$temp['name'] = 'Some name'; 

$data[] = $temp; 

Или в сокращенном обозначении:

$data[] = array('catid' => $value, 'percentage' => 0, 'name' = 'Somename'); 
0

Вы можете использовать array_push

$a1 = array(array('catid' => '1', 'percentage' => '4', 'name' => 'Access Control')); 
$a2 = array('catid' => '7', 'percentage' => '0', 'name' => 'Some Name'); 
array_push($a1 ,$a2); 
print_r($a1); 
Смежные вопросы