文档章节

PHP如何在数组指定位置插入单元

fzxu_05
 fzxu_05
发布于 2016/04/07 10:29
字数 376
阅读 231
收藏 0

这个功能需求来自于网站运营策略,举倒子:
在一个排行列表中,默认有以下元素,顺序有一定的依据,假设是按下载次数排列。

$rows = array(  
  array('name'=>'QQ2010'),  
  array('name'=>'QQ2009'),  
  array('name'=>'迅雷5'),  
  array('name'=>'飞信2010'),  
  array('name'=>'Kugoo2010'),  
  array('name'=>'TTplayer'),  
  array('name'=>'Firefox4.0'),  
  array('name'=>'美图秀秀'),  
  array('name'=>'360safe'),  
  array('name'=>'Chrome6')  
);



如果有一个客户[可牛杀毒]想买花10元/元下我们第二个位置,可以大家想,直接把QQ2009替换掉不就完事了吗。不,那样的话用户体验并不好,明明QQ2009是一个下载次数比较多的软件,为什么在列表中却没有了呢。

其实我们真正的需求是把QQ2009以下的单元都往后推,腾出第二个位置来给[可牛杀毒]。如果页面中只能显示10个单元,那倒霉的就是[Chrome6]了,谁叫他们付费买我们的位置呢,呵呵。

再说到程序原理上来吧,PHP要实现这个需求,挺简单,用数组函数array_splice就可以了,具体用法参照PHP手册。

给一个完整的例子吧:

$rows = array(  
  array('name'=>'QQ2010',),  
  array('name'=>'QQ2009',),  
  array('name'=>'迅雷5',),  
  array('name'=>'飞信2010',),  
  array('name'=>'Kugoo2010',),  
  array('name'=>'TTplayer',),  
  array('name'=>'Firefox4.0',),  
  array('name'=>'美图秀秀',),  
  array('name'=>'360safe',),  
  array('name'=>'Chrome6',),  
);  
  
$pop = array(  
  '2'=>array('name'=>'可牛杀毒'),  
  '5'=>array('name'=>'金山词霸2010'),  
);  
  
foreach($pop as $key=>$p){  
  array_splice($rows, $key-1, 0, array($p));  
}  
  
var_dump($rows);



© 著作权归作者所有

fzxu_05
粉丝 43
博文 165
码字总数 84201
作品 0
朝阳
程序员
私信 提问
PHP之数组函数

键值操作   数组的每个元素都是由键值对组成,通过元素的键名来访问对应的键值。关于键值操作有arrayvalues()、arraykeys()、inarray()、arrayflip()和array_reverse()这5个常用函数 arra...

jjjssswww
2017/06/06
0
0
数据结构——Java实现顺序表

一、分析   什么是顺序表?顺序表是指用一组地址连续的存储单元依次存储各个元素,使得在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中的线性表。一个标准的顺序表需要实现以下基本...

牛cattle
04/19
0
0
Java数据结构和算法(十三)——哈希表

 Hash表也称散列表,也有直接译作哈希表,Hash表是一种根据关键字值(key - value)而直接进行访问的数据结构。它基于数组,通过把关键字映射到数组的某个下标来加快查找速度,但是又和数组...

architect刘源源
2018/02/24
0
0
PHP 数组用法

array() 函数用于创建数组。在 PHP 中,有三种类型的数组: 索引数组 - 带有数字索引的数组 关联数组 - 带有指定的键的数组 多维数组 - 包含一个或多个数组的数组 list(var1,var2...) var1 ...

林夏夕
2016/02/02
64
0
ArrayList源码学习(1)

数据结构定义 从数据结构的角度来说,是线性表基于java的顺序表示和实现,数据结构中定义其是一组地址连续的存储单元,所以其内部其实是数组 我们可以在顺序表中随意的获取指定位置的数据,即...

心扬
2017/10/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

阿里云POLARDB如何助力轻松筹打造5亿用户信赖的大病筹款平台?

轻松筹首创了“大病救助”模式,帮助了众多病患在第一时间解決了医疗资金等问题,为了从源头解决了医疗资金问题。而在轻松筹这样全球5.5亿用户信赖的大病筹款平台的背后,是日益增长的各种数...

阿里云云栖社区
20分钟前
4
0
Confluence 6 在升级过程中查看合并日志

为了监控升级的过程,你应该查看 application log 日志中的输出。 通常日志经常将会显示多个日志实例,这个实例是定义在日志的 INFO 级别的,通常格式如下: WikiToXhtmlMigrationThread-n -...

honeymoose
21分钟前
2
0
git diff 文件对比

git diff filepath 工作区与暂存区比较 git diff HEAD filepath 工作区与HEAD ( 当前工作分支) 比较 git diff --staged 或 --cached filepath 暂存区与HEAD比较 git diff branchName filepa......

李佳顺
21分钟前
1
0
spring mvc 定制化配置

spring mvc 自定义配置 1.实现某些接口,然后让上面的类加载进去. class MyHandlerMethodArgumentResolver implements HandlerMethodArgumentResolver { @Override public boolean......

最爱肉肉
23分钟前
2
0
OSG_采样像机的内容如果不显示到窗口上

cameraLight->setRenderTargetImplementation(Camera::FRAME_BUFFER_OBJECT);// 这句使内容不渲染到屏幕上cameraLight->setRenderOrder(Camera::PRE_RENDER); 1.setRenderTargetImplement......

洛克人杰洛
27分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部