php打乱数组顺序(含二维数组)

最近在做一个考试小程序的Api接口,其中一个是需要将试题列表打乱顺序,都知道,从数据库搜索出来的列表通常为数组的形式,所以我面临的问题就变成了 如何打乱数组顺序。

随手一百度,shuffle()函数 :把片段中的元素按随机顺序重新排列,这个函数是没问题的,当然会有一些注意事项,是否能解决您遇到的问题具体还请自行百度 php shuffle()函数。

显然这个函数是没能解决我的问题,我发现我查询出来的数组是二维数组,当然也有百度打乱二维数组顺序,但是结果并不理想。大多是同转自一位人的,而且第一位是错误的,剩下的转载的全是错误的。
于是自己也算是借鉴,重新写了这个方法。废话聊到这,上代码:

     //随机打乱二维数组顺序 方法public function shuffle_assoc($lists){if(!is_array($lists)){return $lists;}else{$keys = array_keys($lists);//打乱数组的键排序shuffle($keys);$result = array();foreach ($keys as $key){$result[$key] = $list[$key];}}return $result;}//测试方法中调用public function demo(){$data = array(array("id"=>1,"title"=>"语文"),array("id"=>2,"title"=>"数学"),array("id"=>3,"title"=>"英语"),array("id"=>4,"title"=>"物理"),array("id"=>5,"title"=>"化学"),array("id"=>6,"title"=>"生物"),);$result = $this->shuffle_assoc($data);var_dump($result);exit;}//输出结果array(6) {[3]=>array(2) {["id"]=>int(4)["title"]=>string(6) "物理"}[0]=>array(2) {["id"]=>int(1)["title"]=>string(6) "语文"}[4]=>array(2) {["id"]=>int(5)["title"]=>string(6) "化学"}[2]=>array(2) {["id"]=>int(3)["title"]=>string(6) "英语"}[5]=>array(2) {["id"]=>int(6)["title"]=>string(6) "生物"}[1]=>array(2) {["id"]=>int(2)["title"]=>string(6) "数学"}}

上面的方法会将二维数组的键重新排序,但是还是没能解决我的问题,于是接着修改代码。(狗头:苦逼程序员) 两个方法的具体不同在于foreach循环和输出的结果,可自行将两个方法对照,不再赘述。 改进后代码:

     //随机打乱二维数组顺序 方法public function shuffle_assoc($lists){if(!is_array($lists)){return $lists;}else{$keys = array_keys($lists);//打乱数组的键排序shuffle($keys);$result = array();foreach ($keys as $k=> $key){$result[$k] = $list[$key];}}return $result;}//测试方法中调用public function demo(){$data = array(array("id"=>1,"title"=>"语文"),array("id"=>2,"title"=>"数学"),array("id"=>3,"title"=>"英语"),array("id"=>4,"title"=>"物理"),array("id"=>5,"title"=>"化学"),array("id"=>6,"title"=>"生物"),);$result = $this->shuffle_assoc($data);var_dump($result);exit;}//输出结果array(6) {[0]=>array(2) {["id"]=>int(5)["title"]=>string(6) "化学"}[1]=>array(2) {["id"]=>int(2)["title"]=>string(6) "数学"}[2]=>array(2) {["id"]=>int(3)["title"]=>string(6) "英语"}[3]=>array(2) {["id"]=>int(4)["title"]=>string(6) "物理"}[4]=>array(2) {["id"]=>int(1)["title"]=>string(6) "语文"}[5]=>array(2) {["id"]=>int(6)["title"]=>string(6) "生物"}}

第二种是我想要的结果了,您可以根据自己的实际情况选择方法的使用。
另外多维数组的打乱顺序可以自己探索,也不是很难,这里不多说了。

php打乱数组顺序(含二维数组)相关推荐

  1. Java实现拼图小游戏(4)—— 打乱图片(含二维数组知识点)

    打乱图片 一.前言 二.思路 三.改写GameJFrame类 1.注意事项 2.完整代码 四.测试代码 五.结语 一.前言 在上一篇文章中讲述了如何添加图片,本文将实现将十六个格子中的小图片打乱的效果 ...

  2. 【C 语言】数组 ( 验证二维数组内存是线性的 | 打印二维数组 | 以一维数组方式打印二维数组 | 打印二维数组值和地址 )

    文章目录 一.验证二维数组内存是线性的 1.打印二维数组 2.以一维数组方式打印二维数组 3.打印二维数组值和地址 二.完整代码示例 一.验证二维数组内存是线性的 验证二维数组内存是线性的 : 验证方 ...

  3. arrays中copyof复制两个数组_数组,及二维数组

    1.1 命令行参数(C) 在程序运行过程中,可以向应用程序传递一些参数,这些参数称为命名行参数. public 命令行参数以字符串的形式传入args数组中.可以一次传递0-多个参数,以空格分割. 如果 ...

  4. 二维数组 赋值_数组,及二维数组

    1.1 命令行参数(C) 在程序运行过程中,可以向应用程序传递一些参数,这些参数称为命名行参数. public class Test01{public static void main(String[ ...

  5. 01背包和完全背包 的完整讲解版 包含 一维数组实现 和二维数组实现题目

    (二)01背包和完全背包 的完整讲解版 包含 一维数组实现 和二维数组实现题目 //有N件物品和一个容量为V的背包.第i件物品的体积是c[i],价值是w[i].求解将哪些物品装入背包可使价值总和最大. ...

  6. c语言定二维义数组,C语言二维数组超细讲解

    用一维数组处理二维表格,实际是可行的,但是会很复杂,特别是遇到二维表格的输入.处理和输出. 在你绞尽脑汁的时候,二维数组(一维数组的大哥)像电视剧里救美的英雄一样显现在你的面前,初识数组的朋友们还等什 ...

  7. java二维数组添加元素_Java二维数组与动态数组ArrayList类详解

    java二维数组 java 语言中提供的数组是用来存储固定大小的同类型元素. 1.二维数组初始化和声明 数组变量的声明,和创建数组可以用一条语句完成,如下所示: int a[][] = new int ...

  8. 数组array、数组方法,二维数组,冒泡/选择排序

    目录 数组 array 数组的特点 数组的遍历 (循环) forEach()遍历(只能用于数组) map() some() every() 数组方法 去掉vuejs里面数组里的{__ob__: Obs ...

  9. 【C 语言】数组 ( 一维数组形参退化 | 二维数组形参退化 | 函数形参等价关系 )

    文章目录 一.一维数组形参退化 二.二维数组形参退化 三.数组形参等价关系 一.一维数组形参退化 C 中将 一维数组 作为参数 , 传递到函数中 , 该 一维数组 会退化为 指针 ; 将 int ar ...

最新文章

  1. 时空大数据可视化表达分析,看MapGIS七大“超能力”
  2. requests.exceptions.ConnectionError: (‘Connection aborted.‘, BadStatusLine(“‘‘“,))
  3. linux centos7如何格式化磁盘,Linux CentOS 7 磁盘格式化mke2fs、mkfs.ext4、磁盘挂载及手动增加swap空间...
  4. 【Android 内存优化】libjpeg-turbo 函数库交叉编译与使用 ( 交叉编译脚本编写 | 函数库头文件拷贝 | 构建脚本配置 | Android Studio 测试函数库 )
  5. matlab中的cellstr的用法,matlab中的cell array, cellstr()和char()的用法
  6. 【Web安全】实战sqlmap绕过WAF
  7. 职场社交是一个真实需求吗?
  8. Java编译和执行模式包括两种,Java程序的编译和执行模式包括2点,是【 】和半解释。...
  9. [bzoj2743]采花
  10. 理解图像的傅里叶变换
  11. python实习生面试题_大数据分析实习生面试题库
  12. Unity3d gameObject
  13. 《初级会计电算化实用教程(金蝶KIS专业版)》一1.4 会计核算软件
  14. 使用宏将xlsx格式文件批量转为xls格式文件
  15. JS 实现小游戏 打砖块
  16. 激活win10专业版
  17. 高质量 Go 进阶图书,它来了
  18. java 学生兼职_javaweb大学生兼职平台
  19. UE4虚幻引擎UI界面动画制作!
  20. SFP(Soft Filter Pruning)笔记

热门文章

  1. springcloud集成Elasticsearch实现全文搜索的功能
  2. 蓝桥杯 算法训练 Python
  3. wireshark 学习 2
  4. python连接AutoCAD;pyautocad连接错误;win32com连接AutoCAD出现问题
  5. label标签的for属性的作用
  6. 在Struts2中使用DisplayTag翻页时的ognl.InappropriateExpressionException解决方案
  7. oracle中start with和connect by的用法理解
  8. i2c时序图的详细讲解
  9. http://www.qianduan.net/html-special-characters-daquan.html
  10. 流浪地球2能参与认购吗?电影转让份额合法吗?