PHP 数组辅助函数
/**
* 取多维数据中某字段的值
* @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 数组辅助函数的更多相关文章
- 019.CI4框架CodeIgniter辅助函数类之:Array数组查询
01. 数组辅助函数,可以方便的查看数组内部的成员,用法如下图所示: <?php namespace App\Controllers; class Hello extends BaseContr ...
- Hibernate4读取Clob数据
package cn.framework.dao.impl; import java.io.BufferedReader; import java.io.IOException; import jav ...
- CI框架浅析(全篇)
业余花了点时间看看CodeIgniter框架(简称CI),CI目前的稳定版本是 3.X,4.0版本已经出来了,但还在测试中,所以我分析的还是 3.x 版本. CI是一个很轻便的框架,整个下载包 ...
- CodeIgniter框架解析
转载于:https://www.cnblogs.com/xiaoxiaoqingyi/p/6901654.html 转载仅为以后自己学习. 业余花了点时间看看CodeIgniter框架(简称CI),C ...
- CI框架浅析
CI框架浅析(全篇) 业余花了点时间看看CodeIgniter框架(简称CI),CI目前的稳定版本是 3.X,4.0版本已经出来了,但还在测试中,所以我分析的还是 3.x 版本. CI是一个很 ...
- 学习javaScript必知必会(3)~数组(数组创建,for...in遍历,辅助函数,高级函数filter、map、reduce)
一.数组: 1.js是弱语言,js中的数组定义时:不用指定数据类型.不用功指定数组长度:数组可以存储任何数据类型的数据 2.数组定义的[ ] 的实质: [] = new Array(); {} = n ...
- TSPL学习笔记(4):数组相关练习
最近研究函数式编程,都是haskell和scheme交互着看的,所以笔记中两种语言的内容都有,练习一般也都用两种语言分别实现. 本篇练习一些数组有关的问题,之所以与数组相关是因为在命令式编程中以下问题 ...
- ***CI查询辅助函数:insert_id()、affected_rows()
查询辅助函数 $this->db->insert_id() 这个ID号是执行数据插入时的ID. $this->db->affected_rows() Displays the ...
- 数组链表下标指针map list
1.时间复杂度 (1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道.但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间 ...
随机推荐
- HGOI20190810 省常中互测3
Problem A 夏洛特 若当前处在点$(x,y)$下一时刻可以向该点四周任意方向走动一步, 初始在$(0,0)$是否存在一条合法的路线满足下列$n$个限制: 每一个限制形如$t_i , x_i ...
- 【UOJ #46】 【清华集训2014】玄学
题目描述 巨酱有 n 副耳机,他把它们摆成了一列,并且由 1 到n依次编号.每个耳机有一个玄学值,反映了各自的一些不可名状的独特性能.玄学值都是 0 到 m-1 间的整数.在外界的作用下(包括但不限于 ...
- 【转载】使用 scikit-learn 进行特征选择
[转载]使用 scikit-learn 进行特征选择 Read more: http://bluewhale.cc/2016-11-25/use-scikit-learn-for-feature-se ...
- 解析XML的几种方式:DOM、SAX、PULL
DOM解析 解析器读入整个文档,然后构建一个主流内存的树结构,然后代码就可以使用dom接口来操作这个树结构. 优点: 整个文档树在内存中,便于操作:支持删除.修改.重新排列等多种功能. 通过树形结构存 ...
- 如何在外部获取当前A标签的ID值
<div class="diskmain"> <ul id="folder"> <li><span class='do ...
- Entity Framework Code First使用者的福音 --- EF Power Tool使用记之一
下次会为大家深入解析这个小工具. 最先看到这个工具是在EF产品组最新的博客文章上,http://blogs.msdn.com/b/adonet/archive/2011/05/18/ef-power ...
- vue-preview 缩略图
如果我们在 vue 中想使用缩略图的话,可以使用 vue-preview 的插件 小图的缩略 大图的样式 使用方法:vue-preview 下 载: npm i vue-preview 使用方法 ...
- golang defer 延后执行什么
对于golang的defer,我们已经知道,defer定义的语句可以延后到函数返回时执行. 经常用在文件的关闭,锁的释放等场景中.而且defer定义的语句即使遇到panic也会执行.这样,可以执行必要 ...
- dvm 的进程和 Linux 的进程, 应用程序的进程是否为同一个概念?
dvm 指 dalvik 的虚拟机. 每一个 Android 应用程序都拥有一个独立的 Dalvik 虚拟机实例,应用程序都在它自己的进程中运行.而每一个 dvm 都是在 Linux 中的一个进程,所 ...
- 【flask】flask项目配置 app.config
[理论] 在很多情况下,你需要设置程序的某些行为,这时你就需要使用配置变量.在Flask中,配置变量就是一些大写形式的Python变量, 你也可以称之为配置参数或配置键.使用统一的配置变量可以避免在程 ...