通过层级键在多维数组中获取目标值

 /*
*Author : @YunGaZeon
*Date : 2017.08.09
*param data : Data Array
*param keys : Key level Array
*return : Array
*/
function findbykeys($data,$keys,$_index=0,&$_target_arr=[])
{
if($_index>(count($keys)-1))
return $_target_arr; foreach($data as $k=>$v)
{
if($k===$keys[$_index])
{
if($_index==(count($keys)-1))
$_target_arr[]=$v;
else
{
if(is_array($v))
findbykeys($v,$keys,++$_index,$_target_arr);
}
}
else
{
if(is_array($v))
findbykeys($v,$keys,$_index,$_target_arr);
}
}
return $_target_arr;
}

使用:获取京东某页评价中的所有图片链接

 $data=file_get_contents('https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment&productId=5045080&score=0&sortType=5&page=1&pageSize=10&isShadowSku=0&rid=0&fold=1');
$data=iconv('GBK', 'UTF-8//TRANSLIT//IGNORE', $data);
preg_match('/^[^\(]+\(([\s\S]+)\);$/',$data,$data);
$data=$data[1];
$cm=json_decode($data,true);
$keys=['comments','images','imgUrl'];
var_dump(findbykeys($cm,$keys));

最新文章

  1. Linux Shell 截取字符串
  2. jQuery-H5-css3转盘抽奖-遁地龙卷风
  3. Xcode无法启动ios模拟器的问题
  4. yum安装高版本mysql(5.5)
  5. ctags 文章
  6. poj 1195 mobile phone
  7. hdu 1576 A/B
  8. python文件_读取
  9. NSInternalInconsistencyException attempt to delete row 2 from section 4 which only contains 0 rows before the update 问题原因
  10. 【20171028早】ubuntu 16.04 LTS 安装php遇到的问题
  11. char数组中除去某个元素
  12. JavaScript 中常见设计模式整理
  13. LeetCode--11_974_Subarray_Sums_Divisible_by_K
  14. Sublime插件:Terminal
  15. Hibernate从入门到了解
  16. java-16习题
  17. 『TensorFlow』分类问题与两种交叉熵
  18. c#: 简单的日志管理类(TextWriterTraceListener)
  19. 关闭Pycharm拼写检查
  20. 如何在ubuntu16上安装docker

热门文章

  1. 【ACM】喷水装置
  2. POJ 3304 Segments 判断直线和线段相交
  3. map 常用方法
  4. awk 分解行、字段
  5. Maven的安装以及介绍
  6. aspx有"记住我"的登录
  7. Aspx 验证码_各种封装
  8. Photoshop之切图
  9. 解决Django Rest Framework中的跨域问题
  10. 【Shell脚本学习23】Shell函数参数