如何将数组与动态输入结合起来?

时间:2017-06-09 15:44:22

标签: php arrays multidimensional-array array-merge

我的代码是这样的:

<?php 
    $a = array(
            array('id'=>1,'name'=>'chelsea'),
            array('id'=>2,'name'=>'mu')
    );
    $b = array(
            array('id'=>2,'name'=>'city'),
            array('id'=>3,'name'=>'liverpool')
    );
    $offset = end($a)['id'];
    $c = array_merge(
        $a, 
        array_map(
            function($v)use($offset){
                $v['id'] += $offset; 
                return $v;
            }, $b
        )
    );
?>

如果代码运行,结果如下:

  

数组(

     

[0] =&gt;排列           (               [id] =&gt; 1               [name] =&gt;切尔西           )

     

[1] =&gt;排列           (               [id] =&gt; 2               [name] =&gt;亩           )

     

[2] =&gt;排列               (                   [id] =&gt; 4                   [name] =&gt;市               )

     

[3] =&gt;排列               (                   [id] =&gt;五                   [name] =&gt;利物浦               )

     

我想改变这样的结果:

  

数组(

     

[0] =&gt;排列           (               [id] =&gt; 1               [name] =&gt;切尔西           )

     

[1] =&gt;排列           (               [id] =&gt; 2               [name] =&gt;亩           )

     

[2] =&gt;排列               (                   [id] =&gt; 3                   [name] =&gt;市               )

     

[3] =&gt;排列               (                   [id] =&gt; 4                   [name] =&gt;利物浦               )

     

我该怎么做?

注意:数组id中索引$b的值为dinamyc。因此索引id的值可以介于1-5之间

2 个答案:

答案 0 :(得分:1)

$offset = end($a)['id'];更改为$offset = end($a)['id'] - $b[0]['id'] + 1; Live demo.

答案 1 :(得分:1)

此代码应该可以使用

    $a = array(
            array('id'=>1,'name'=>'chelsea'),
            array('id'=>2,'name'=>'mu')
    );
    $b = array(
            array('id'=>3,'name'=>'city'),
            array('id'=>5,'name'=>'liverpool')
    );
    $offset = end($a)['id'];
    // generate a new array with new ids based on array a 
    foreach($b as $value){
        $new_array[] =array('id'=>++$offset,'name'=>$value['name']);  
    }

    $c = array_merge($a,$new_array);
    print_r($c);