在php程序中,减少查询的次数,也是一个提高网站整体性能的办法。
将满足基本条件的数据全部查询出来:
<?php $list_json = $this->accessCourse('ID DESC', 1);//查询出所以满足基本条件的数据,状态正常... $list = Json_decode($list_json, true);//因为查询出来的是json格式这里将其转换成array格式 //热门课程 $toplist = array_sort($list, 'NUM', SORT_DESC);//二维数组排序 $this->assign('toplist', $toplist); //感兴趣 $interest = findArrayList($list,9);//筛选出9条数据 $this->assign('interest', $interest); //试听课程 $listen_yw = findArrayList($list,4,'SUBJECT',1);//语文 $listen_sx = findArrayList($list,4,'SUBJECT',2);//数学 $listen_yy = findArrayList($list,4,'SUBJECT',3);//英语 $listen_wl = findArrayList($list,4,'SUBJECT',4);//物理 $listen_hx = findArrayList($list,4,'SUBJECT',5);//化学 $this->assign('listen_yw', $listen_yw); $this->assign('listen_sx', $listen_sx); $this->assign('listen_yy', $listen_yy); $this->assign('listen_wl', $listen_wl); $this->assign('listen_hx', $listen_hx); ?>
以下是findArrayList函数的实现代码。
<?php /** * 查询数组 * @param array $array * @param int $length * @param string $field * @param $string $value * @return array * @edit by www.jb200.com **/ function findArrayList($array, $length = null, $field = null, $value = null){ if(!is_array($array)){ return $array; } $new_arr = array(); if(!is_null($field)){ foreach ($array as $k=>$v){ if($array[$k][$field] == $value){ $new_arr[$k] = $v; } } if(empty($new_arr)){ return ; } } if(empty($new_arr)){ $new_arr = $array; } if(!is_null($length)){ $new_arr = array_slice($new_arr,0,$length);//取出数组中指定的长度 } return $new_arr; } ?>
代码说明:
array_slice 从数组中取出一段
array array_slice ( array array, int offset [, int length [, bool preserve_keys]] )
array_slice() 返回根据 offset 和 length 参数所指定的 array 数组中的一段序列。
如果 offset 非负,则序列将从 array 中的此偏移量开始。如果 offset 为负,则序列将从 array 中距离末端这么远的地方开始。
如果给出了 length 并且为正,则序列中将具有这么多的单元。如果给出了 length 并且为负,则序列将终止在距离数组末端这么远的地方。如果省略,则序列将从 offset
开始一直到 array 的末端。
注意:
array_slice() 默认将重置数组的键。自 PHP 5.0.2 起,可以通过将 preserve_keys 设为 TRUE 来改变此行为。
还有一个相对应的 array_splice 把数组中的一部分去掉并用其它值取代。
array array_splice ( array &input, int offset [, int length [, array replacement]] )
array_splice() 把 input 数组中由 offset 和 length 指定的单元去掉,如果提供了 replacement 参数,则用 replacement 数组中的单元取代。返回一个包含有被移除单
元的数组。注意 input 中的数字键名不被保留。
如果 offset 为正,则从 input 数组中该值指定的偏移量开始移除。如果 offset 为负,则从 input 末尾倒数该值指定的偏移量开始移除。
如果省略 length,则移除数组中从 offset 到结尾的所有部分。
如果指定了 length 并且为正值,则移除这么多单元。
如果指定了 length 并且为负值,则移除从 offset 到数组末尾倒数 length 为止中间所有的单元。
小技巧:
当给出了 replacement 时要移除从 offset 到数组末尾所有单元时,用 count($input) 作为 length。
如果给出了 replacement 数组,则被移除的单元被此数组中的单元替代。
如果 offset 和 length 的组合结果是不会移除任何值,则 replacement 数组中的单元将被插入到 offset 指定的位置。
注意:
替换数组中的键名不保留。
如果用来替换的值只是一个单元,那么不需要给它加上 array(),除非该单元本身就是一个数组。
希望通过以上的介绍,大家可以掌握array_splice函数的用法,以及从数组中取指定长度数据的方法。
脚本学堂,祝大家学习进步。