一个数组$a0有N个元素,要将其中第3个元素,排在数组的首位。

第一种做法是:

取出第3个元素,赋值给变量$a

unset 第3个元素

array_unshift 将$a添加到数组头部。

如果是数字下标的数组,这样是可以的。可如果是字符串做为下标,array_unshift会破坏下标,都变成了数字,以0开始计数。

解决方案为:

取出第3个元素,定义成一个单一数组 $a1

unset第3个元素,更新数组$a0

array_merge($a1,$a0)。

使用 array_merge 不会破坏数组下标。

示例:

<?php
$array1 = array (
0 =>
array (
'top' => 'true',
'path' => 'cPath=9',
'current' => false,
'name' => 'Women',
'image' => NULL,
'has_sub_cat' => true,
),
1 =>
array (
'top' => 'true',
'path' => 'cPath=10',
'current' => false,
'name' => 'Men',
'image' => NULL,
'has_sub_cat' => false,
),
2 =>
array (
'top' => 'true',
'path' => 'cPath=1',
'current' => false,
'name' => 'Accessories',
'image' => '',
'has_sub_cat' => false,
),
3 =>
array (
'top' => 'true',
'path' => 'cPath=2',
'current' => false,
'name' => 'New Arrival',
'image' => '',
'has_sub_cat' => false,
),
4 =>
array (
'top' => 'true',
'path' => 'cPath=4',
'current' => true,
'name' => 'Styles',
'image' => '',
'has_sub_cat' => true,
),
5 =>
array (
'top' => 'false',
'path' => 'cPath=4_5',
'current' => false,
'name' => 'Basketball Shoes',
'image' => '',
'has_sub_cat' => false,
),
6 =>
array (
'top' => 'false',
'path' => 'cPath=4_6',
'current' => false,
'name' => 'Football Shoes',
'image' => '',
'has_sub_cat' => false,
),
7 =>
array (
'top' => 'false',
'path' => 'cPath=4_7',
'current' => true,
'name' => 'Tennis Shoes',
'image' => '',
'has_sub_cat' => false,
)
);
var_export($array1);
echo "<br /><br /><br />\n\r"; $temp_array = array();
global $temp_array,$rootcid;
foreach($array1 as $k=>$v){
if($v['current'] == true){
$rootcids = explode('_', str_replace('cPath=', '', $v['path']));
$rootcid = $rootcids[0];
break;
}
} foreach($array1 as $k=>$v){
$ifrootcid = explode('_', str_replace('cPath=', '', $v['path']));
if($rootcid==$ifrootcid[0]){
$temp_array[] = $v;
unset($array1[$k]);
}
}
//$array1 = array_values($array1);
var_export($array1);
echo "<br /><br /><br />\n\r";
//var_export($temp_array);
$array1 = array_merge($temp_array, $array1);
var_export($array1);
?>

补充:

//array_splice也是个不错的选择

<?php
$arr = array(
'key1' => 'a',
'key2' => 'b',
'key3' => 'c'
);
$item = $arr['key3'];
unset($arr['key3']);
array_splice($arr, 0, 0, $item);
var_export($arr);
?>

打完收工。

php将数组中某个元素置顶设为第一个元素的更多相关文章

  1. C语言:对传入sp的字符进行统计,三组两个相连字母“ea”"ou""iu"出现的次数,并将统计结果存入ct所指的数组中。-在数组中找出最小值,并与第一个元素交换位置。

    //对传入sp的字符进行统计,三组两个相连字母“ea”"ou""iu"出现的次数,并将统计结果存入ct所指的数组中. #include <stdio.h& ...

  2. JavaScript中hoisting(悬置/置顶解析/预解析) 实例解释,全局对象,隐含的全局概念

    JavaScript中hoisting(悬置/置顶解析/预解析) 实例解释,全局对象,隐含的全局概念 <html> <body> <script type="t ...

  3. js将数组中一个或多个字段相同的子元素中合并

    最近js中遇到js将数组中一个或多个字段相同的子元素中合并,相信很多朋友也有遇到,大家可能有多种方法,我在这里记录一个相对简单的方法,当然大家如有其它更好的方法,请提出来大家共同学习. //将经济事项 ...

  4. 【转载】 C#中List集合使用First()方法获取第一个元素

    在C#的List集合操作过程中,如果要获取List集合中的第一个元素对象,则一般会先通过获取到list[0]这种方式来获取第一个元素.其实在List集合中提供了获取最后一个元素的First()方法,调 ...

  5. Qt中让Qwidget置顶的方法

    一般来是说窗体置顶和取消只要        setWindowFlags(Qt::WindowStaysOnTopHint);        setWindowFlags(Qt::Widget); 要 ...

  6. 《剑指offer》-递增数组中找到和为S的(最小)两个元素

    题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的. 输出描述: 对应每个测试案例,输出两个数,小的先输出. 首先 ...

  7. 表格中上移下移置顶的js操作

    <script> $(function(){  //上移  var $up = $(".up")  $up.click(function() {   var $tr = ...

  8. 设置td中的table置顶

    style="vertical-align: top" <td colspan="11" rowspan="5" style=&quo ...

  9. Flex布局如何实现最后一个元素右对齐,或者第一个元素左对齐

    先来看看一个例子 在一个div我们把四个按钮全部放到右边去了,看下效果↓ 这个时候我们想把第一个按钮左对齐,其他保持不变 这时候我们来个第一个按钮样式上加上 :margin-right: auto; ...

随机推荐

  1. Newlifex修仙(一) 超级配置文件

    新生命团队基础框架X组件,包括日志.数据库.网络.RPC.序列化.缓存.Windows服务.多线程等模块,支持.Net Framework/.netstandard/Mono. 说道配置文件,大家觉得 ...

  2. ASP.NET Core 入门笔记7,ASP.NET Core MVC 视图布局入门

    一.前言 1.本教程主要内容 ASP.NET Core MVC (Razor)视图母版页教程 ASP.NET Core MVC (Razor)带有Section的视图母版页教程 ASP.NET Cor ...

  3. 【并行计算-CUDA开发】__syncthreads的理解

    __syncthreads()是cuda的内建函数,用于块内线程通信. __syncthreads() is you garden variety thread barrier. Any thread ...

  4. SpringCloud学习(五)路由网关(zuul)(Finchley版本)

    在微服务架构中,需要几个基础的服务治理组件,包括服务注册与发现.服务消费.负载均衡.断路器.智能路由.配置管理等,由这几个基础组件相互协作,共同组建了一个简单的微服务系统.一个简单的微服务系统如下图: ...

  5. RFID/13.56MHZ/NFC线圈防干扰原理-附磁导材料防干扰原理 20191128

    RFID/13.56MHZ/NFC之间采用电磁感应方式进行通信. 1.铁氧体.硅钢片等导磁材料的相对磁导率比较高,多年前在变压器中已经有广泛的应用.有防止磁通饱和,提高变压器感应效率的作用. 2.RF ...

  6. 分库分表之后,id 主键如何处理

    基于数据库的实现方案 数据库自增 id 这个就是说你的系统里每次得到一个 id,都是往一个库的一个表里插入一条没什么业务含义的数据,然后获取一个数据库自增的一个 id.拿到这个 id 之后再往对应的分 ...

  7. Java判断指定日期是否为工作日

    Java判断指定日期是否为工作日 转自:https://www.jianshu.com/p/966659492f2f 转:https://www.jianshu.com/p/05ccb5783f65转 ...

  8. winform 中如何获取debug目录的路径

    项目中需要在debug启动目录创建文件夹,所以先获取debug路径: var debugPath = System.AppDomain.CurrentDomain.BaseDirectory;

  9. Elastic Search对Document的搜索

    在ES中使用的重点.ES中存储的数据.核心就是为了提供全文搜索能力的.搜索功能非常重要.多练. 1 query string searchsearch的参数都是类似http请求头中的字符串参数提供搜索 ...

  10. linux mysql-5.7.26 安装全记录

    买了个阿里云,自己折腾一下. 时间:2019年7月17日13:40:18 1.下载 wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7. ...