/**
* 取多维数据中某字段的值
* @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. CF1213D Equalizing by Division

    easy version hard version 问题分析 直接从hard version入手.不难发现从一个数\(x\)能得到的数个数是\(O(\log x)\)的.这样总共有\(O(n\log ...

  2. [CF666E]Forensic Examination:后缀自动机+线段树合并

    分析 用到了两个小套路: 使用线段树合并维护广义后缀自动机的\(right\)集合. 查询\(S[L,R]\)在\(T\)中的出现次数:给\(T\)建SAM,在上面跑\(S\),跑到\(R\)的时候先 ...

  3. sqli-labs(41) and 两php函数的讲解

    0X01 构造闭合 发现 不需要闭合 直接构造 id=- union ,database(), 成功 注入 0X02 堆叠注入同道理 一样的 这里我们来了解一下这个函数 mysqli_multi_qu ...

  4. C++入门经典-例4.2-调用默认参数的函数

    1:代码如下: // 4.2.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using ...

  5. sshd_config已修改,ssh还是无法远程问题解决

    环境:vmware下的debian10.2 /etc/sshd/sshd_config 配置文件已经完成修改开启允许root账号登录配置 ssh远程返回如下信息: [Administrator.NIH ...

  6. DB2基础维护手册

    诊断DB2系统性能:db2top -d DEMODB db2top详解:http://blog.sina.com.cn/s/blog_636d62310102v7lm.html

  7. vue中limitBy,filterBy,orderBy的用法

    1.limitBy的用法 <body> <div id="box"> <ul> <li v-for="val in arr | ...

  8. 造题inginging

    造个题 模拟+sort+贪心 蚕丛及鱼凫,造题何茫然 U74939 小歪被抓走了 代码(不知道对不对哦) #include<bits/stdc++.h> using namespace s ...

  9. 【转】C++ const成员变量和成员函数(常成员函数)

    转:http://c.biancheng.net/view/2230.html 在类中,如果你不希望某些数据被修改,可以使用const关键字加以限定.const 可以用来修饰成员变量和成员函数. co ...

  10. 详解嵌套ListView、ScrollView布局显示不全的问题

    在项目开发中,可能经常遇到嵌套ListView.ScrollView的问题,就是重写onMeasure方法.解决如下 public class ExpandListView extends ListV ...