php 改变数组的长度,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函数的实现代码。

/**

* 查询数组

* @param array $array

* @param int $length

* @param string $field

* @param $string $value

* @return array

* @edit by www.jbxue.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函数的用法,以及从数组中取指定长度数据的方法。

脚本学堂,祝大家学习进步。

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
<p> 需要学习Windows系统YOLOv4的同学请前往《Windows版YOLOv4目标检测实战:原理与源码解析》, </p> <p> 课程链接 https://edu.csdn.net/course/detail/29865 </p> <h3> <span style="color:#3598db;">【为什么要学习这门课】</span> </h3> <p> <span>Linux</span>创始人<span>Linus Torvalds</span>有一句名言:<span>Talk is cheap. Show me the code. </span><strong><span style="color:#ba372a;">冗谈不够,放码过来!</span></strong> </p> <p> <span> </span>代码阅读是从基础到提高的必由之路。尤其对深度学习,许多框架隐藏了神经网络底层的实现,只能在上层调包使用,对其内部原理很难认识清晰,不利于进一步优化和创新。 </p> <p> YOLOv4是最近推出的基于深度学习的端到端实时目标检测方法。 </p> <p> YOLOv4的实现darknet是使用C语言开发的轻型开源深度学习框架,依赖少,可移植性好,可以作为很好的代码阅读案例,让我们深入探究其实现原理。 </p> <h3> <span style="color:#3598db;">【课程内容与收获】</span> </h3> <p> 本课程将解析YOLOv4的实现原理和源码,具体内容包括: </p> <p> - YOLOv4目标检测原理<br /> - 神经网络及darknet的C语言实现,尤其是反向传播的梯度求解和误差计算<br /> - 代码阅读工具及方法<br /> - 深度学习计算的利器:BLAS和GEMM<br /> - GPU的CUDA编程方法及在darknet的应用<br /> - YOLOv4的程序流程 </p> <p> - YOLOv4各层及关键技术的源码解析 </p> <p> 本课程将提供注释后的darknet的源码程序文件。 </p> <h3> <strong><span style="color:#3598db;">【相关课程】</span></strong> </h3> <p> 除本课程《YOLOv4目标检测:原理与源码解析》外,本人推出了有关YOLOv4目标检测的系列课程,包括: </p> <p> 《YOLOv4目标检测实战:训练自己的数据集》 </p> <p> 《YOLOv4-tiny目标检测实战:训练自己的数据集》 </p> <p> 《YOLOv4目标检测实战:人脸口罩佩戴检测》<br /> 《YOLOv4目标检测实战:国交通标志识别》 </p> <p> 建议先学习一门YOLOv4实战课程,对YOLOv4的使用方法了解以后再学习本课程。 </p> <h3> <span style="color:#3598db;">【YOLOv4网络模型架构图】</span> </h3> <p> 下图由白勇老师绘制 </p> <p> <img alt="" src="https://img-bss.csdnimg.cn/202006291526195469.jpg" /> </p> <p>   </p> <p> <img alt="" src="https://img-bss.csdnimg.cn/202007011518185782.jpg" /> </p>
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页