1. array_unshift()数组头插入新元素

$fruits = array('apple','pear','banana','orange');
array_unshift($fruits, 'cherry');
pr($fruits); function pr($str){
echo "<pre>";
print_r($str);
echo "</pre>";
}

输出:

Array
(
[0] => cherry
[1] => apple
[2] => pear
[3] => banana
[4] => orange
)

可向array_unshift传入多个元素

$fruits = array('apple','pear','banana','orange');
array_unshift($fruits, 'cherry','pie');
pr($fruits);

输出:

Array
(
[0] => cherry
[1] => pie
[2] => apple
[3] => pear
[4] => banana
[5] => orange
)

2. 与之类似的函数array_push,向数组末尾插入一个或多个元素。

3. array_splice()任意位置插入新元素(不考虑键名)

$fruits = array('apple','pear','banana','orange');
//第三个参数固定为0,第二个参数为插入的索引位置,最后一个参数是插入的元素,如果插入多个,写成数组
array_splice($fruits,3,0,'pie');
pr($fruits);

输出:

Array
(
[0] => apple
[1] => pear
[2] => banana
[3] => pie
[4] => orange
)

//插入多个新元素,写成数组形式

$fruits = array('apple','pear','banana','orange');
$new_items = array('pie','pie2');
array_splice($fruits,3,0,$new_items);
pr($fruits);

输出:

Array
(
[0] => apple
[1] => pear
[2] => banana
[3] => pie
[4] => pie2
[5] => orange
)

4. 任意位置插入新元素(考虑数字键名的情况)

使用array_splice()有个不好的地方,不能保留数字键名。

下面有一已知数组array(7=>'apple',3=>'pear',5=>'banana',2=>'orange');

要向第二个元素pear后面插入一新元素new fruit,键名是6.

实现过程有点曲折,新数组由三部分组成。具体见代码:

$new_key = 6;
$new_value = 'new fruit';
$exist_value = 'pear';
$array = array(7=>'apple',3=>'pear',5=>'banana',2=>'orange'); $pp = insert_array($array,$exist_value,$new_key,$new_value);
pr($pp); function insert_array($array,$exist_value,$new_key,$new_value){
$search_key = array_search($exist_value,array_values($array));
if($search_key !== false){
$new_array = array();
$len = count($array);
$arr_before = array_slice($array,0,$search_key+1,TRUE);
$arr_after =$search_key == 0 ? array_slice($array,$search_key,$len,TRUE) : array_slice($array,$search_key-1,$len,TRUE);
foreach($arr_before as $k=>$v){
$new_array[$k] = $v;
}
$new_array[$new_key] = $new_value;
foreach($arr_after as $k=>$v){
$new_array[$k] = $v;
}
}else{
$new_array = $array;
$new_array[$new_key] = $new_value;
}
return $new_array;
}

PHP数组中插入元素的更多相关文章

  1. js向一个数组中插入元素的几个方法-性能比较

    向一个数组中插入元素是平时很常见的一件事情.你可以使用push在数组尾部插入元素,可以用unshift在数组头部插入元素,也可以用splice在数组中间插入元素. 但是这些已知的方法,并不意味着没有更 ...

  2. [jstips]向数组中插入一个元素

    向现有数组中插入一个元素是经常会见到的一个需求.你可以: 使用push将元素插入到数组的尾部: 使用unshift将元素插入到数组的头部: 使用splice将元素插入到数组的中间: 上面那些方法都是常 ...

  3. js有序数组中插入一个元素,并有序的输出

    题目:比较传入函数的参数,将参数组成数组,从小到大排序,返回新的数组. 如: insert();console.log(arr); //[] insert(-1,-2); console.log(ar ...

  4. 数组中的元素 增加push用法 unshift() 方法 和减少pop() 方法 shift() 和其他位置增删 splice() 方法 join() 方法 reverse() 方法 sort() 方法

    push用法 push 英 [pʊʃ] 美 [pʊʃ] vt. 推,推动; vt. 按; 推动,增加; 对…施加压力,逼迫; 说服; n. 推,决心; 大规模攻势; 矢志的追求 定义和用法 push( ...

  5. LeetCode数组移除数组中目标元素等题目

    一种自己解题,一种高赞解题 /** * 移除数组中目标元素,返回新数组长度 * @param nums * @param val * @return */ public int removeEleme ...

  6. 【Java实现】剑指offer53.1——在排序数组中查找数字(LeetCode34:在排序数组中查找元素的起始位置)

    序数组中查找元素的起始位置):思路分享 <剑指offer>题目和LeetCode主站本质是一样的,想要找到target数目,也需要找到左右边界 题目解析: 在一个排序数组中,找到targe ...

  7. 【LeetCode】34. 在排序数组中查找元素的第一个和最后一个位置

    34. 在排序数组中查找元素的第一个和最后一个位置 知识点:数组,二分查找: 题目描述 给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值在数组中的开始位置和结束位置 ...

  8. 面试题-->写一个函数,返回一个数组中所有元素被第一个元素除的结果

    package com.rui.test; import java.util.Random; /** * @author poseidon * @version 1.0 * @date:2015年10 ...

  9. php 去除数组中重复元素

    去除数组中重复元素, 找了下可以一下两个函数 php array_flip()与array_uniqure() $arr = array(…………) ;// 假设有数组包含一万个元素,里面有重复的元素 ...

随机推荐

  1. CPU与GPU区别大揭秘

    http://blog.csdn.net/xiaolang85/article/details/51500340 有网友在网上提问:“为什么现在更多需要用的是 GPU 而不是 CPU,比如挖矿甚至破解 ...

  2. BZOJ2179:FFT快速傅立叶(FFT)

    Description 给出两个n位10进制整数x和y,你需要计算x*y. Input 第一行一个正整数n. 第二行描述一个位数为n的正整数x. 第三行描述一个位数为n的正整数y. Output 输出 ...

  3. thinkphp 和 laravel使用sql语句操作db和源码浅析

    thinkphp 和 laravel是phper开发中用的比较多的两个框架,无所谓好坏,看个人习惯及喜爱! 前言对于一个PHP应用,可能最多的就是操作数据,以致于初学者有时只把php当做数据库增删查改 ...

  4. eclipse 设置字体大小

    步骤: 1.打开eclipse,在工具栏里找到 Window -> Perferences,打开如下图: 2.展开General -> Appearance -> Colors an ...

  5. redis-desktop-manager 安装——redis的可视化工具

    一.redis-desktop-manager介绍 Redis可视化工具之一,RedisDesktopManager是开源的,托管在github上:https://github.com/uglide/ ...

  6. PAT——有几个PAT

    思路来源:https://www.cnblogs.com/asinlzm/p/4440603.html 字符串APPAPT中包含了两个单词“PAT”,其中第一个PAT是第2位(P),第4位(A),第6 ...

  7. Python入门基础:代码的编码风格

    每种语言都有自己的编码风格,对于Python这种比较注重于空格的影响的代码而言,其风格也是相当重要的. 主要包括以下几点: 1:使用 4 空格缩进,而非 TAB  .在小缩进(可以嵌套更深)和大缩进( ...

  8. C/C++ Windows API——获取计算机信息 转

    转自:http://blog.csdn.net/chy555chy/article 函数 头文件 作用 GetVersionEx <windows.h> 获取系统版本信息(deprecat ...

  9. NSMutableArray和NSArray的常用方法及相互转换

    NSMutableArray和NSArray的常用方法及相互转换 // NSArray --> NSMutableArray NSMutableArray *myMutableArray = [ ...

  10. JSON.stringify()和JSON.parse()的区别

    JSON.stringify()此方法用于将一个对象解析成字符串并返回. JSON.parse()此方法刚好相反是将一个字符串对象解析成一个JSON对象.