/**
* 取多维数据中某字段的值
* @param array $array 数据源数组
* @param string|array $field 要获取的字段
* @return array 结果数组
*/
function array_muliti_field($array, $field)
{
$resp = [];
foreach($array as $k => $v) {
if(is_array($field)) {
foreach($field as $f) {
if(isset($v[$f]) && $v[$f] !== null) {
$resp[$f][$v[$f]] = $v[$f];
}
}
} elseif(isset($v[$field]) && $v[$field] !== null){
$resp[] = $v[$field];
}
}
return $resp;
}/**
* 将多维数组中的某一个元素作为键名,重新生成数组
*
* $array = [
* 0 => ['id'=>10, 'title'=>'t10'],
* 1 => ['id'=>11, 'title'=>'t11']
* ];
*
* $res = array_set_key($array, 'id');
*
* 结果如下:
* $res = [
* 10 => ['id'=>10, 'title'=>'t10'],
* 11 => ['id'=>11, 'title'=>'t11']
* ];
*
* @param array $array 要处理的数组
* @param string $key 作为 key 的字段名称
* @param string $valuekey [description]
* @return array 新生成的数组
*/
function array_set_key($array, $key = '', $valuekey = '')
{
$res = [];
while (list($k, $v) = each($array)) {
if ($key == '') {
$res[] = (($valuekey != '') ? $v[$valuekey] : $v);
} else {
$res[$v[$key]] = (($valuekey != '') ? $v[$valuekey] : $v);
}
}
reset($array); return $res;
}/**
* 将多维数组中的某两个元素作为键名组成二维数组
* $array = [
* 0 => ['id'=>10,'title'=>'t10'],
* 1 => ['id'=>11,'title'=>'t11'],
* 2 => ['id'=>11,'title'=>'t12']
* ];
*
* $res = array_set_keys($array, 'id', 'title');
*
* 结果如下:
* $res = [
* 10 => [
* 't10' => ['id'=>10,'title'=>'t10']
* ],
*
* 11 => [
* 't11' => ['id'=>11,'title'=>'t11'],
* 't12' => ['id'=>11,'title'=>'t12']
* ]
* ];
* @param [type] $array [description]
* @param [type] $key1 [description]
* @param string $key2 [description]
* @param string $valuekey [description]
* @return [type] [description]
*/
function array_set_keys($array, $key1, $key2 = '', $valuekey = '')
{
$res = [];
while (list($k, $v) = each($array)) {
$k1 = $v[$key1];
$vl = ($valuekey != '') ? $v[$valuekey] : $v;
if ($key2 == '') {
$res[$k1][] = $vl;
} else {
$res[$k1][$v[$key2]] = $vl;
}
}
reset($array); return $res;
}

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. [LOJ3109][TJOI2019]甲苯先生的线段树:DP

    分析 首先,请允许我 orz HN队长zsy.链接 我们发现树上的链有两种类,一类是直上直下的,一类不是直上直下的(废话).并且,如果我们确定了左侧和右侧的链的长度和整条链上所有节点的编号之和,那么这 ...

  2. JMH基准测试框架

    jmh-gradle-plugin, 集成JMH基准测试框架和 Gradle   0 赞 0 评论 文章标签:Gradle  JMH  基准  INT  benchmark  framework  帧 ...

  3. shiro所需的依赖

    <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring< ...

  4. axios的数据请求方式及跨域

    express 的三大功能:静态资源.路由.模板引擎 app.use(express.static('www')); 只要是创建这个静态的目录,这个 www 的静态目录里面的文件就可以被访问 数据的请 ...

  5. docker—tomcat 报错:Failed to get D-Bus connection: Operation not permitted

    docker search centos   查系统镜像 docker pull docker.io/centos 进入容器 [root@git opt]# docker images REPOSIT ...

  6. 统计学_F分布(图文详解和python脚本实现)

    python机器学习-乳腺癌细胞挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003&u ...

  7. BOSCH汽车工程手册————自适应巡航速度控制ACC

    驾驶员通过自动速度控制器操纵键,将汽车行驶速度控制在预设的期望速度上. ACC系统则在自动速度控制的基础上检测本车到前面行驶汽车的距离以及相对速度,以及其他车道上的信息. 利用这些数据就能控制两车之间 ...

  8. iOS charts CombinedChartView First and last bars are shown half only

    charts 使用CombinedChartView 绘图时,发现第一个和最后一个bar只能显示一半的问题,解决方法: ChartXAxis *xAxis = chartView.xAxis; xAx ...

  9. 启用 SR-IOV 解决 Neutron 网络 I/O 性能瓶颈

    目录 文章目录 目录 前言 Neutron 的网络实现模型 基于虚拟网络设备的虚拟机流量走向 Neutron 网络实现模型的性能瓶颈 SR-IOV 技术简介 在 Neutron 中引入 SR-IOV ...

  10. 阶段3 2.Spring_06.Spring的新注解_2 spring的新注解-Bean

    下面要解决第二部分的配置问题 这两行一出场,就表示可以通过调用构造函数实例化.因为这都是newInstance 上面的需要加上参数,下面的没有任何参数 下面这俩实现的效果不一样. 下面这个除了会创建对 ...