1. /**
  2. * 取多维数据中某字段的值
  3. * @param array $array 数据源数组
  4. * @param string|array $field 要获取的字段
  5. * @return array 结果数组
  6. */
  7. function array_muliti_field($array, $field)
  8. {
  9. $resp = [];
  10. foreach($array as $k => $v) {
  11. if(is_array($field)) {
  12. foreach($field as $f) {
  13. if(isset($v[$f]) && $v[$f] !== null) {
  14. $resp[$f][$v[$f]] = $v[$f];
  15. }
  16. }
  17. } elseif(isset($v[$field]) && $v[$field] !== null){
  18. $resp[] = $v[$field];
  19. }
  20. }
  21. return $resp;
  22. }/**
  23. * 将多维数组中的某一个元素作为键名,重新生成数组
  24. *
  25. * $array = [
  26. * 0 => ['id'=>10, 'title'=>'t10'],
  27. * 1 => ['id'=>11, 'title'=>'t11']
  28. * ];
  29. *
  30. * $res = array_set_key($array, 'id');
  31. *
  32. * 结果如下:
  33. * $res = [
  34. * 10 => ['id'=>10, 'title'=>'t10'],
  35. * 11 => ['id'=>11, 'title'=>'t11']
  36. * ];
  37. *
  38. * @param array $array 要处理的数组
  39. * @param string $key 作为 key 的字段名称
  40. * @param string $valuekey [description]
  41. * @return array 新生成的数组
  42. */
  43. function array_set_key($array, $key = '', $valuekey = '')
  44. {
  45. $res = [];
  46. while (list($k, $v) = each($array)) {
  47. if ($key == '') {
  48. $res[] = (($valuekey != '') ? $v[$valuekey] : $v);
  49. } else {
  50. $res[$v[$key]] = (($valuekey != '') ? $v[$valuekey] : $v);
  51. }
  52. }
  53. reset($array);
  54. return $res;
  55. }/**
  56. * 将多维数组中的某两个元素作为键名组成二维数组
  57. * $array = [
  58. * 0 => ['id'=>10,'title'=>'t10'],
  59. * 1 => ['id'=>11,'title'=>'t11'],
  60. * 2 => ['id'=>11,'title'=>'t12']
  61. * ];
  62. *
  63. * $res = array_set_keys($array, 'id', 'title');
  64. *
  65. * 结果如下:
  66. * $res = [
  67. * 10 => [
  68. * 't10' => ['id'=>10,'title'=>'t10']
  69. * ],
  70. *
  71. * 11 => [
  72. * 't11' => ['id'=>11,'title'=>'t11'],
  73. * 't12' => ['id'=>11,'title'=>'t12']
  74. * ]
  75. * ];
  76. * @param [type] $array [description]
  77. * @param [type] $key1 [description]
  78. * @param string $key2 [description]
  79. * @param string $valuekey [description]
  80. * @return [type] [description]
  81. */
  82. function array_set_keys($array, $key1, $key2 = '', $valuekey = '')
  83. {
  84. $res = [];
  85. while (list($k, $v) = each($array)) {
  86. $k1 = $v[$key1];
  87. $vl = ($valuekey != '') ? $v[$valuekey] : $v;
  88. if ($key2 == '') {
  89. $res[$k1][] = $vl;
  90. } else {
  91. $res[$k1][$v[$key2]] = $vl;
  92. }
  93. }
  94. reset($array);
  95. return $res;
  96. }

PHP 数组辅助函数的更多相关文章

  1. 019.CI4框架CodeIgniter辅助函数类之:Array数组查询

    01. 数组辅助函数,可以方便的查看数组内部的成员,用法如下图所示: <?php namespace App\Controllers; class Hello extends BaseContr ...

  2. Hibernate4读取Clob数据

    package cn.framework.dao.impl; import java.io.BufferedReader; import java.io.IOException; import jav ...

  3. CI框架浅析(全篇)

        业余花了点时间看看CodeIgniter框架(简称CI),CI目前的稳定版本是 3.X,4.0版本已经出来了,但还在测试中,所以我分析的还是 3.x 版本. CI是一个很轻便的框架,整个下载包 ...

  4. CodeIgniter框架解析

    转载于:https://www.cnblogs.com/xiaoxiaoqingyi/p/6901654.html 转载仅为以后自己学习. 业余花了点时间看看CodeIgniter框架(简称CI),C ...

  5. CI框架浅析

    CI框架浅析(全篇)     业余花了点时间看看CodeIgniter框架(简称CI),CI目前的稳定版本是 3.X,4.0版本已经出来了,但还在测试中,所以我分析的还是 3.x 版本. CI是一个很 ...

  6. 学习javaScript必知必会(3)~数组(数组创建,for...in遍历,辅助函数,高级函数filter、map、reduce)

    一.数组: 1.js是弱语言,js中的数组定义时:不用指定数据类型.不用功指定数组长度:数组可以存储任何数据类型的数据 2.数组定义的[ ] 的实质: [] = new Array(); {} = n ...

  7. TSPL学习笔记(4):数组相关练习

    最近研究函数式编程,都是haskell和scheme交互着看的,所以笔记中两种语言的内容都有,练习一般也都用两种语言分别实现. 本篇练习一些数组有关的问题,之所以与数组相关是因为在命令式编程中以下问题 ...

  8. ***CI查询辅助函数:insert_id()、affected_rows()

    查询辅助函数 $this->db->insert_id() 这个ID号是执行数据插入时的ID. $this->db->affected_rows() Displays the ...

  9. 数组链表下标指针map list

    1.时间复杂度 (1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道.但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间 ...

随机推荐

  1. HGOI20190810 省常中互测3

    Problem A  夏洛特 若当前处在点$(x,y)$下一时刻可以向该点四周任意方向走动一步, 初始在$(0,0)$是否存在一条合法的路线满足下列$n$个限制: 每一个限制形如$t_i , x_i ...

  2. 【UOJ #46】 【清华集训2014】玄学

    题目描述 巨酱有 n 副耳机,他把它们摆成了一列,并且由 1 到n依次编号.每个耳机有一个玄学值,反映了各自的一些不可名状的独特性能.玄学值都是 0 到 m-1 间的整数.在外界的作用下(包括但不限于 ...

  3. 【转载】使用 scikit-learn 进行特征选择

    [转载]使用 scikit-learn 进行特征选择 Read more: http://bluewhale.cc/2016-11-25/use-scikit-learn-for-feature-se ...

  4. 解析XML的几种方式:DOM、SAX、PULL

    DOM解析 解析器读入整个文档,然后构建一个主流内存的树结构,然后代码就可以使用dom接口来操作这个树结构. 优点: 整个文档树在内存中,便于操作:支持删除.修改.重新排列等多种功能. 通过树形结构存 ...

  5. 如何在外部获取当前A标签的ID值

    <div class="diskmain"> <ul id="folder"> <li><span class='do ...

  6. Entity Framework Code First使用者的福音 --- EF Power Tool使用记之一

    下次会为大家深入解析这个小工具.  最先看到这个工具是在EF产品组最新的博客文章上,http://blogs.msdn.com/b/adonet/archive/2011/05/18/ef-power ...

  7. vue-preview 缩略图

    如果我们在 vue 中想使用缩略图的话,可以使用 vue-preview 的插件 小图的缩略 大图的样式 使用方法:vue-preview 下  载:   npm i vue-preview 使用方法 ...

  8. golang defer 延后执行什么

    对于golang的defer,我们已经知道,defer定义的语句可以延后到函数返回时执行. 经常用在文件的关闭,锁的释放等场景中.而且defer定义的语句即使遇到panic也会执行.这样,可以执行必要 ...

  9. dvm 的进程和 Linux 的进程, 应用程序的进程是否为同一个概念?

    dvm 指 dalvik 的虚拟机. 每一个 Android 应用程序都拥有一个独立的 Dalvik 虚拟机实例,应用程序都在它自己的进程中运行.而每一个 dvm 都是在 Linux 中的一个进程,所 ...

  10. 【flask】flask项目配置 app.config

    [理论] 在很多情况下,你需要设置程序的某些行为,这时你就需要使用配置变量.在Flask中,配置变量就是一些大写形式的Python变量, 你也可以称之为配置参数或配置键.使用统一的配置变量可以避免在程 ...