关于往数组添加数组并且保留键名

 

  这个问题是朋友问我的,最后做出来了,我是一名小白,如有错或写的差勿喷,谢谢,直接上代码。

  需求就是往数组添加数组并且保留键名,测试数据和需求如图

  

  需求

  

  这里需要了解到一个函数就是array_splice();

  语法 
  array_splice(array,offset,length,array)参数 描述 
  array 必需。规定数组。 
  offset 必需。数值。如果 offset 为正,则从输入数组中该值指定的偏移量开始移除。如果 offset 为负,则从输入数组末尾倒数该值指定的偏移量开始移除。 
  length 可选。数值。如果省略该参数,则移除数组中从 offset 到 结尾的所有部分。如果指定了 length 并且为正值,则移除这么多元素。如果指定了 length 且为负值,则移除从 offset 到数组末尾倒数 length 为止 中间所有的元素。 
  array 被移除的元素由此数组中的元素替代。如果没有移除任何值,则此数组中的元素将插入到指定位置。 
  提示和注释 
  提示:如果函数没有删除任何元素 (length=0),则替代数组将从 start 参数的位置插入。

  代码如下:

  

 1 <?php
 2 $a = array(
 3     '1' => '123',
 4     '6' => '234',
 5     '3' => '345'
 6     );
 7 
 8 
 9 
10 $c['top'] = array(
11     'id' => '1',
12     'name' => '我'
13 );
14 array_splice($a, 2, 0, $c);
15 echo "<pre>";
16 print_r($a);
17 ?>

  得到数据是

  

  没有达到我的需求,则使用foreach,进行改进代码:

  

<?php
$a = array(
    '1' => '123',
    '6' => '234',
    '3' => '345'
    );

$c['top'] = array(
    'id' => '1',
    'name' => '我'
);
array_splice($a, 2, 0, $c);
$res = [];
foreach ($a as $k => $v) {
    $res[$k] = $v;
    if($k == '2'){
        $res['top'] = $c['top'];
        unset($res[2]);
    }
}
// echo "<pre>";
print_r($res);
?>

  第一次写,请多多指教!!!

 

posted @ 2018-04-20 13:14  东圃扛把子  阅读(220)  评论(0)    收藏  举报