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; ...
随机推荐
- Unreal Engine* 4.19 的 CPU 功能检测
随着现代 CPU 内核数量的增加,可以拥有更多的游戏功能.但是,相比配备高端系统的玩家,内核数量较少的玩家可能会处于劣势.为了缩小这种差距,可以使用 C++ 和蓝图划分特性.这样可以实现最大的 CPU ...
- 安装nova
在控制节点上执行 controllerHost='controller' controllerIP='172.31.240.49' MYSQL_PASSWD='m4r!adbOP' RABBIT_PA ...
- 【miscellaneous】海康相机RTSP连接代码分析
海康相机RTSP连接代码分析 最近在做海康相机rtsp连接获取音视频的工作,现在介绍一下分析过程和源码. [源码在我上传的共享资料中: http://download.csdn.net/detail/ ...
- 【C/C++开发】__stdcall,__cdecl,__fastcall的区别
__stdcall和__cdecl的区别 __stdcall和__cdecl是两种函数名字修饰.(注意是连续的两个下划线) Windows上 windows上不管是C还是C++,默认使用的都是__st ...
- Angular ViewChild & ViewChildren
基础 ViewChild ViewChild 装饰器用于获取模板视图中的元素或直接调用其组件中的方法.它支持 Type 类型或 string 类型的选择器,同时支持设置 read 查询条件,以获取不同 ...
- mac 查看占用的端口并关闭进程
-i 查看某个端口是否被占用,如 lsof -i:8081 显示占用情况 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 12188 a ...
- flask的session基础认识
from flask import Flask,session from datetime import timedelta import os app = Flask(__name__) app.c ...
- 简单的搭载Spring cloud框架
大家不懂的可以在评论区给我留言
- [Agc036D]Do Not Duplicate_链表_贪心_数论
Do Not Duplicate 题目链接:https://atcoder.jp/contests/agc036/tasks/agc036_b 题解: 首先最后肯定至多只有$n$个数. 我们想处理出来 ...
- PTA(Advanced Level)1075.PAT Judge
The ranklist of PAT is generated from the status list, which shows the scores of the submissions. Th ...