1

我有一个关于 PHP 数组的问题,我想做的是给关联数组赋值。

//before
$a = array(
       array(
         'name' => 'test1',
         'email' => 'test@test.com',
         'desc' => 'Who know1',
         'button_link' => 'yest2'
        ),
       array(
         'name' => 'test2',
         'email' => 'test2@test.com',
         'desc' => 'Who know2',
         'button_link' => 'yest2'
    ) 
);

$b = array(
      array(
        'item1' => 'value1',
        'item2' => 'value2'
       ),
      array(
        'item1' => 'value3',
        'item2' => 'value4'
    )
 );

我想将一个值放入 $a['desc'], $b['item1']$b['item2']像下面...

//after
$after_combile = array(
   array(
     'name' => 'test1',
     'email' => 'test@test.com',
     'desc' => 'Who know1 $b["item1"] $b["item2"]',
     'button_link' => 'yest2'
    ),
   array(
     'name' => 'test2',
     'email' => 'test2@test.com',
     'desc' => 'Who know2 $b["item1"] $b["item2"]',
     'button_link' => 'yest2'
   ) 
);

我已经尝试了很多方法array_walk,所以..

我想准确输出如下

*输出

array (size=2)
  0 => 
    array 
        'name' => 'test1',
        'email' => 'test@test.com',
        'desc' => 'Who know1 value1' value2',
        'button_link' => 'yest2'
  1 => 
    array 
     '  name' => 'test2',
        'email' => 'test2@test.com',
        'desc' => 'Who know2 value3 value1',
        'button_link' => 'yest2'

对不起,伙计们,我的问题不清楚。

4

5 回答 5

1
$a = array(
    array(
        'name' => 'test1',
        'email' => 'test@test.com',
        'desc' => 'Who know1',
        'button_link' => 'yest2'
    ),
    array(
        'name' => 'test2',
        'email' => 'test2@test.com',
        'desc' => 'Who know2',
        'button_link' => 'yest2'
    )
);

$b = array(
    array(
        'item1' => 'value1',
        'item2' => 'value2'
    ),
    array(
        'item1' => 'value3',
        'item2' => 'value4'
    )
);

$after_combile = array();

foreach($a as $k => $array) {
    $array['desc'] .= implode(' ', $b[$k]);
    $after_combile[] = $array;
}
于 2013-10-27T12:34:31.020 回答
1
$result = array_map(function($a,$b){
   $a['desc'] .= ' '.implode(', ',$b);
   return $a;
},$a,$b);
于 2013-10-27T12:50:34.783 回答
0

假设您使用的是可比较的键:

for($i=0;$i<count($a);$i++) {
    $a[$i]['desc'] = $a[$i]['desc'].$b[$i]['item1'].$b[$i]['item2'];
}
于 2013-10-27T12:33:34.243 回答
0

利用:

$after_combile = array();

foreach($a as $key=>$array) {
    $array["desc"] .= " ".implode(" ",$b[$key]); 
    $after_combile[] = $array;
}

print_r($after_combile);
于 2013-10-27T12:34:02.197 回答
0

usingarray_walk除了不脏还有更好的性能:

<?php
$a = array(
        array(
            'name' => 'test1',
            'email' => 'test@test.com',
            'desc' => 'Who know1',
            'button_link' => 'yest2'
        ),
        array(
            'name' => 'test2',
            'email' => 'test2@test.com',
            'desc' => 'Who know2',
            'button_link' => 'yest2'
        ) 
);
$b = array(
        array(
            'item1' => 'value1',
            'item2' => 'value2'
        ),
        array(
            'item1' => 'value3',
            'item2' => 'value4'
        )
);
array_walk($a, function(&$arr, $key){
    global $b;
    $arr['desc'] .= " ".implode(" ", $b[$key]);
});
?>
于 2013-10-27T13:06:34.240 回答