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; ...
随机推荐
- bash-1 初始化CentOS系统的初始化脚本
初始化CentOS系统的初始化脚本 #!/bin/bash # #******************************************************************* ...
- VMware workstation安装Windows Server 2012 R2步骤详解(附下载链接)
话不多说,直接上链接.所需工具: 1.VMware workstation 14.0(版本无所谓) 附链接:https://pan.baidu.com/s/1CrH ...
- linux 中的命令是什么?执行命令的几种方式?如何自己创建命令?
linux 中的命令是什么? 命令是可执行的二进制程序 执行命令的几种方式? ./test.sh #相对路径执行 /data/test.sh ...
- CenterNet算法笔记(目标检测论文)
论文名称:CenterNet: Keypoint Triplets for Object Detectiontection 论文链接:https://arxiv.org/abs/1904.08189 ...
- 【转载】android权限大全
1.android.permission.WRITE_USER_DICTIONARY 允许应用程序向用户词典中写入新词 2.android.permission.WRITE_SYNC_SETTINGS ...
- USACO 1.1 Greedy Gift Givers
模拟. 如果用$map$的话,会很好写. 如果你不会$map$的话,在此小广告:https://blog.csdn.net/CQBZLYTina/article/details/80063739 /* ...
- day33 网络编程之UDP与进程了解
UDP 什么是UDP协议 在上节课的练习中,使用TCP进行网络编程时,我们会遇到粘包问题,这是因为TCP是流式协议,而今天学习的UDP协议不是流式协议,其发送的数据是数据报格式的,在进行数据发送时该协 ...
- P2709 小B的询问 【普通莫队】
这是我的莫队入门题,我也了解到了莫队分为普通莫队以及带修莫队.顾名思义,普通莫队不需要修改区间的值,而带修莫队处理区间的值会修改的查询. 能用莫队的前提条件: 1.在知道 [l, r]中信息时,可以在 ...
- kafka原理和操作
参考: 原理: https://www.cnblogs.com/yinzhengjie/p/9780976.html 常用配置参数: https://www.cnblogs.com/yinzhengj ...
- 20191204-使用nginx解决ajax测试调用接口跨域问题
问题描述 之前要测试一个http的接口,在postman中测试成功,但使用ajax调用却跨域.于是通过使用ngin反向代理的方式来解决ajax调用跨域问题 测试页面的内容 <html> & ...