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')
);



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

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

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

给一个完整的例子吧:


<?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);
?>



最近的结果是:

array(12) {
  [0]=>
  array(1) {
    ["name"]=>
    string(6) "QQ2010"
  }
  [1]=>
  array(1) {
    ["name"]=>
    string(8) "可牛杀毒"
  }
  [2]=>
  array(1) {
    ["name"]=>
    string(6) "QQ2009"
  }
  [3]=>
  array(1) {
    ["name"]=>
    string(5) "迅雷5"
  }
  [4]=>
  array(1) {
    ["name"]=>
    string(12) "金山词霸2010"
  }
  [5]=>
  array(1) {
    ["name"]=>
    string(8) "飞信2010"
  }
  [6]=>
  array(1) {
    ["name"]=>
    string(9) "Kugoo2010"
  }
  [7]=>
  array(1) {
    ["name"]=>
    string(8) "TTplayer"
  }
  [8]=>
  array(1) {
    ["name"]=>
    string(10) "Firefox4.0"
  }
  [9]=>
  array(1) {
    ["name"]=>
    string(8) "美图秀秀"
  }
  [10]=>
  array(1) {
    ["name"]=>
    string(7) "360safe"
  }
  [11]=>
  array(1) {
    ["name"]=>
    string(7) "Chrome6"
  }
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,您可以使用PHP的array_splice函数来实现将指定key插入指定位置的操作。具体步骤如下: 假设您的二维数组为$myArray,要插入key为$newKey,要插入位置为$position。 1. 首先,使用array_column函数获取二维数组指定key的所有值,得到一个一维数组$keysArray: ``` $keysArray = array_column($myArray, '指定key'); ``` 2. 然后,在$keysArray中找到要插入位置,并使用array_search函数获取该位置的索引值$index: ``` $index = array_search($position, $keysArray); ``` 3. 接着,使用array_splice函数将$newKey插入到$myArray中$index位置: ``` array_splice($myArray, $index, 0, array(array('指定key' => $newKey))); ``` 4. 最后,$myArray中就已经成功插入指定key指定位置。 完整代码如下: ``` $myArray = array( array('指定key' => 'value1', '其他key' => 'value2'), array('指定key' => 'value3', '其他key' => 'value4'), array('指定key' => 'value5', '其他key' => 'value6') ); $newKey = 'value7'; $position = 'value3'; $keysArray = array_column($myArray, '指定key'); $index = array_search($position, $keysArray); array_splice($myArray, $index, 0, array(array('指定key' => $newKey))); print_r($myArray); ``` 输出结果如下: ``` Array ( [0] => Array ( [指定key] => value1 [其他key] => value2 ) [1] => Array ( [指定key] => value7 ) [2] => Array ( [指定key] => value3 [其他key] => value4 ) [3] => Array ( [指定key] => value5 [其他key] => value6 ) ) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值