精华

LOVEME96 2016-10-21 10:40:19 浏览(1512) 回答(3) 赞(0)

新手求教:二维数组中一般会有多个key,如果我们要获得指定key的值,应该怎么做?

问题标签: php

回答(3)

TimberSwift 2016-10-21

第一种:最简单的方法: foreach遍历数组,代码:

foreach ($arr as $key => $value) {
$arr2[] = $value['name'];
}

另一种方法:使用了array_map $arr2 = array_map('array_shift',$arr); 意为把$arr数组的每一项值的开头的值移出,并返回被移出的每一项值中被移出的值,注意此时新数组$arr2的键仍是原数组$arr的键。

如果需要获取的是二维数组的每一项的开头列或结尾列,也可以这样做: $arr2 = array_map('end',$arr); 哈哈,也是很方便的。

TimberSwift 2016-10-21

第三种方法: array_reduce方法,不过代码略多,不过这个方法的想象空间(针对别的数组取值操作)还是蛮大的:

$arr2 = array_reduce($arr, create_function('$result, $v', '$result[] = $v["name"];return $result;'));

array_reduce方法用回调函数迭代地将对数组的值进行操作,而create_function用于一个匿名方法做回调用,这个匿名方法的参数$result为上一次迭代产生的值,$v是当前的值,内部实现既为获取到数组$arr每一项的”name”的值并push到新$result数组;

TimberSwift 2016-10-21

第四种:这个方法同样也很简单,而且最灵活

$arr2 = array_column($arr, 'name');

第二个参数为想要获取的那一列的键名,是不是很方便呢,不过这个方法有个限制,就是php版本必须 >= 5.5.0,在陈旧项目中使用这个方法还是得斟酌一下哈 随机获取二维数组中的一个值.

$arr1 = array(
<span style="white-space:pre"> </span> 'p1'=>array('ky_d'=>'福建省泉州市丰泽区华大街道1','ky_s'=>'350503005'), 
<span style="white-space:pre"> </span>'p2'=>array('ky_d'=>'福建省泉州市丰泽区华大街道2','ky_s'=>'350503006'), 
<span style="white-space:pre"> </span>'p3'=>array('ky_d'=>'福建省泉州市丰泽区华大街道3','ky_s'=>'350503007')
);
$temp = array_rand($arr1,1);
// print_r($temp); echo $arr1[$temp]['ky_d'].':'.$arr1[$temp]['ky_s'];

获取一维或多维数组某个特定键(数组下标)的所有值.

author:yangyu@sina.cn description:

根据某一特定键(下标)取出一维或多维数组的所有值,不用循环的理由是考虑大数组的效率,把数组序列化,然后根据序列化结构的特点提取需要的字符串.

function array_get_by_key(array $array, $string){
<span style="white-space:pre"> </span>if (!trim($string)) return false;
<span style="white-space:pre"> </span>preg_match_all("/\"$string\";\w{1}:(?:\d+:|)(.*?);/", serialize($array), $res);
<span style="white-space:pre"> </span>return $res[1];
}
$r = array('id'=> 1, 's'=> 23, 'a' => array('s' => 123, array(1, 2, 's' => "asdasdgsadggsadg")));
echo '<pre>';
print_r (array_get_by_key($r, 's'));
/*
result:
Array
(
<span style="white-space:pre"> </span>[0] => 23
<span style="white-space:pre"> </span>[1] => 123
<span style="white-space:pre"> </span>[2] => "asdasdgsadggsadg"
)
*/

如何从二维数组中的多个key中获取指定key的值?的更多相关文章

  1. 二维数组过滤,根据多个条件获取二维数组中指定的arr

    /** * 二维数组过滤,根据多个条件获取二维数组中指定的arr * @param $data_arr * @param $lm_number * @param $source_type * @par ...

  2. phpcms抛出的二维数组转移到js,js中for....in遍历数组,用“.”连接来读出一维数组值

    直切正题: 1.phpcms在模版中读出数组有很多中方法,如,{pc:content action="lists"}或{pc:get sql=""},经过{lo ...

  3. 二维数组int[3][2]在内存中的分布方式

  4. php中向前台js中传送一个二维数组

    在php中向前台js中传送一个二维数组,并在前台js接收获取其中值的全过程方法: (1),方法说明:现在后台将数组发送到前台 echo json_encode($result); 然后再在js页面中的 ...

  5. iOS中的二维数组

    首先我们知道OC中是没有二维数组的,二维数组是通过一位数组的嵌套实现的,但是别忘了我们有字面量,实际上可以和C/C++类似的简洁地创建和使用二维数组.这里总结了创建二维数组的两种方法以及数组的访问方式 ...

  6. OpenCV中Mat与二维数组之间的转换

    ---恢复内容开始--- 在OpenCV中将Mat(二维)与二维数组相对应,即将Mat中的每个像素值赋给一个二维数组. 全部代码如下: #include <iostream> #inclu ...

  7. Java基础--二维数组

    1.二维数组的定义 二维数组表示行列二维结构,在栈空间中的二维数组的地址指向堆空间中的一维数组,堆空间中的一维数组的地址又指向一维数组所在的内存空间. 2.二维数组的声明 二维数组声明有3种方式,推荐 ...

  8. Java打印M图形(二维数组)——(九)

    对于平面图形输出集合图形与数字组合的,用二维数组.先在Excel表格中分析一下,找到简单的规律.二维数组的行数为行高,列数为最后一个数大小. 对于减小再增大再减小再增大的,可以用一个boolean标志 ...

  9. Java如何设定二维数组的上限?

    在Java中,如何设定二维数组的上限? 以下示例中,使用arrayname.length来确定二维数组的上限(元素数目). package com.yiibai; public class Dimen ...

  10. C++二维数组讲解、二维数组的声明和初始化

    我们知道,一维空间是一条线,数学中用一条数轴来表达:二维空间是一个平面,数学中用平面坐标系来表达.那么二维数组又是什么样的呢? 线与面 我们用一个下标来描述一维数组中的某个元素,就好像在用数描述一条线 ...

随机推荐

  1. django初探-创建简单的博客系统

    django第一步 1. django安装 pip install django print(django.get_version()) 查看django版本 2. 创建项目 打开cmd,进入指定目录 ...

  2. Spring Boot 2.0(五):Docker Compose + Spring Boot + Nginx + Mysql 实践

    我知道大家这段时间看了我写关于 docker 相关的几篇文章,不疼不痒的,仍然没有感受 docker 的便利,是的,我也是这样认为的,I know your felling . 前期了解概念什么的确实 ...

  3. oracle 11g数据库 DMP还原数据库

    -------------------------- jd :表空间 -------------------------- --本地登陆 cmd下直接执行 sqlplus/as sysdba; --修 ...

  4. [git 实践篇]如何创建公钥

    如何创建公钥 首先启动一个Git Bash窗口(非Windows用户直接打开终端) 执行: cd ~/.ssh 如果返回"- No such file or directory", ...

  5. javaAPI中的常用 类 以及接口

    java.lang包中的常用类以及接口 类 1. Integer :Integer 类在对象中包装了一个基本类型 int 的值.Integer 类型的对象包含一个 int 类型的字段. 2. Math ...

  6. 删除日志释放空间最好不要用rm

    目前在维护一些服务器有一个根目录空间经常告警no space left ,切到/var/log 目录下du -sh * 的时候,发现有一个authlog占了12G,然后立马执行了rm authlog: ...

  7. C语言使用指针变量指向字符串,对字符串进行处理后再将指针移向开头为什么不能输出?(使用Dev-c++进行编译)

    # include <stdio.h> # include <stdlib.h> int main() { char *point_1="aaaaaabbbbbbzz ...

  8. C语言博客作业--函数 陈张鑫

    一.PTA实验作业 题目1:6-3 使用函数判断完全平方数 1. 本题PTA提交列表 2. 设计思路 1.定义int IsSquare( int n )函数 2.判断(sqrt(n)是否为整数 3., ...

  9. 201621123040《Java程序设计》第七周学习总结

    1.本周学习总结 1.1思维导图:Java图形界面总结 2.书面作业 2.1GUI中的事件处理 2.1.1写出事件处理模型中最重要的几个关键词. 关键词:事件 事件源 事件监听器 2.1.2任意编写事 ...

  10. 深入浅出 SSL 管理配置实战

    我们生活在一个信息大爆炸的时代,几乎每天都在和互联网打交道,购物.网银转账.支付宝付款.搜索信息.查看邮件.观看视频.微信聊天.上网冲浪.阅读新闻等,无不时时刻刻在和网络打交道.那如何保护网络安全就相 ...