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; ...
随机推荐
- 【ARM-Linux开发】Linux的SOCKET编程详解
Linux的SOCKET编程详解 1. 网络中进程之间如何通信 进 程通信的概念最初来源于单机系统.由于每个进程都在自己的地址范围内运行,为保证两个相互通信的进 程之间既互不干扰又协调一致工作,操作系 ...
- 深入理解C语言-深入理解内存四区
数组与指针 当数组做函数参数的时候,会退化为一个指针 此时在函数内是得不到数组大小的 因此,数组做函数参数的时候需要传递数组大小,也就是多传递一个参数 void func(int arr[], int ...
- C#ModBus Tcp
C#ModBus Tcp 报文解析 上一篇博客已经完成 C#ModBus Tcp Master的实现 本篇主要对不同的功能码所发出的报文进行解析(包括请求报文及响应报文) 读操作 功能码 0x01 ...
- 第12课.经典问题解析(const;指针和引用)
问题1:const什么时候为只读变量?什么时候是常量? const常量的判别准则: a.只有用字面量初始化的const常量才会进入符号表(直接初始化过的const为常量) b.被使用其他变量初始化的c ...
- Stream系列(十)Count方法使用
计数器 视频讲解: https://www.bilibili.com/video/av77905733/ EmployeeTestCase.java package com.example.demo; ...
- linux的route
参考: https://blog.csdn.net/u011857683/article/details/83795435 老男孩: https://blog.51cto.com/oldboy/974 ...
- 分库分表之后,id 主键如何处理
基于数据库的实现方案 数据库自增 id 这个就是说你的系统里每次得到一个 id,都是往一个库的一个表里插入一条没什么业务含义的数据,然后获取一个数据库自增的一个 id.拿到这个 id 之后再往对应的分 ...
- 2019牛客暑期多校训练营(第七场)-B Irreducible Polynomial(多项式因式分解)
题目链接:https://ac.nowcoder.com/acm/contest/887/B 题意:给定整系数多项数,判断实数域上是否可约. 思路: AC代码: #include<cstdio& ...
- Python +requests 关于post请求返回报错
python+request 发送post请求:msg返回"Content type 'application/octet-stream' not supported" 一.问题源 ...
- PyCharm 格式化代码 常用快捷键
ctrl+alt+L 一 常用快捷键 编辑类:Ctrl + D 复制选定的区域或行Ctrl + Y 删除选定的行Ctrl + Alt + L 代码格 ...