php将数组中某个元素置顶设为第一个元素
一个数组$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将数组中某个元素置顶设为第一个元素的更多相关文章
- C语言:对传入sp的字符进行统计,三组两个相连字母“ea”"ou""iu"出现的次数,并将统计结果存入ct所指的数组中。-在数组中找出最小值,并与第一个元素交换位置。
//对传入sp的字符进行统计,三组两个相连字母“ea”"ou""iu"出现的次数,并将统计结果存入ct所指的数组中. #include <stdio.h& ...
- JavaScript中hoisting(悬置/置顶解析/预解析) 实例解释,全局对象,隐含的全局概念
JavaScript中hoisting(悬置/置顶解析/预解析) 实例解释,全局对象,隐含的全局概念 <html> <body> <script type="t ...
- js将数组中一个或多个字段相同的子元素中合并
最近js中遇到js将数组中一个或多个字段相同的子元素中合并,相信很多朋友也有遇到,大家可能有多种方法,我在这里记录一个相对简单的方法,当然大家如有其它更好的方法,请提出来大家共同学习. //将经济事项 ...
- 【转载】 C#中List集合使用First()方法获取第一个元素
在C#的List集合操作过程中,如果要获取List集合中的第一个元素对象,则一般会先通过获取到list[0]这种方式来获取第一个元素.其实在List集合中提供了获取最后一个元素的First()方法,调 ...
- Qt中让Qwidget置顶的方法
一般来是说窗体置顶和取消只要 setWindowFlags(Qt::WindowStaysOnTopHint); setWindowFlags(Qt::Widget); 要 ...
- 《剑指offer》-递增数组中找到和为S的(最小)两个元素
题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的. 输出描述: 对应每个测试案例,输出两个数,小的先输出. 首先 ...
- 表格中上移下移置顶的js操作
<script> $(function(){ //上移 var $up = $(".up") $up.click(function() { var $tr = ...
- 设置td中的table置顶
style="vertical-align: top" <td colspan="11" rowspan="5" style=&quo ...
- Flex布局如何实现最后一个元素右对齐,或者第一个元素左对齐
先来看看一个例子 在一个div我们把四个按钮全部放到右边去了,看下效果↓ 这个时候我们想把第一个按钮左对齐,其他保持不变 这时候我们来个第一个按钮样式上加上 :margin-right: auto; ...
随机推荐
- 【计算机视觉】【并行计算与CUDA开发】OpenCV中GPU模块使用
CUDA基本使用方法 在介绍OpenCV中GPU模块使用之前,先回顾下CUDA的一般使用方法,其基本步骤如下: 1.主机代码执行:2.传输数据到GPU:3.确定grid,block大小: 4.调用内核 ...
- jstack 命令
NAME jstack - Prints Java thread stack traces for a Java process, core file, or remote debug server. ...
- 【转帖】 解开龙芯与mips4000的关系
-- 苏联给的套件,我们只要把电子管插上就好. -- 千万次机器,不晓得来源 DJS-130系列,16位小型机,仿造美国NOVA DJS-180系列,超级小型机,仿造美国DEC VAX, 能跑DEC的 ...
- linux用户和组 之 用户管理
一. linux 用户和组的基本介绍 1.linux下 有三种用户: 1. root: 权限最大的. 2. 系统用户: UID小于1000的.系统服务管理用户,一般是不允许登录系统的.(比如mysql ...
- Spring系列四:Bean Scopes作用域
等闲识得东风面,万紫千红总是春. 概述 在Spring框架中,我们可以在六个内置的spring bean作用域中创建bean,还可以定义bean范围.在这六个范围中,只有在使用支持Web的applic ...
- c++学习笔记之函数重载和模板理解
1.函数重载: C++ 不允许变量重名,但是允许多个函数取相同的名字,只要参数表不同即可,这叫作函数的重载(其英文是 overload).重载就是装载多种东西的意思,即同一个事物能完成不同功能. 所谓 ...
- 深入15个HTML元素方法,你见过吗?
虽然现代化的 web 开发更多地依赖各种 MVC 框架,但开发者仍需要熟练掌握 HTML 与 DOM 方面的基础知识.不过,即使是有着多年经验的前端开发者,也会遇到一些不明所以的情况.本文首先将为初学 ...
- 进阶Java编程(3)线程的同步与死锁
线程的同步与死锁 1,同步问题引出 在多线程的处理之中,可以利用Runnable描述多个线程操作的资源,而Thread描述每一个线程对象,对于当多个线程访问统一资源的时候如果处理不当就会产生数据的错误 ...
- Autofac通过配置的方式
autofac是比较简单易用的IOC容器.下面我们展示如何通过json配置文件,来进行控制反转. 需要用到以下程序集.可以通过nugget分别安装 Microsoft.Extensions.Confi ...
- c# TCP/IP协议利用Socket Client通信(只含客户端Demo)
完全是基础,新手可以随意看看,大牛可以关闭浏览页了,哈哈. TCP/IP协议 TCP/IP是一系列网络通信协议的统称,其中最核心的两个协议是TCP和IP.TCP称为传输控制协议,IP称为互联网络协议. ...