zoukankan      html  css  js  c++  java
  • 【CodeBase】通过层级键在多维数组中获取目标值

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

     1 /*
     2 *Author : @YunGaZeon
     3 *Date : 2017.08.09
     4 *param data : Data Array
     5 *param keys : Key level Array
     6 *return : Array
     7 */
     8 function findbykeys($data,$keys,$_index=0,&$_target_arr=[])
     9 {
    10     if($_index>(count($keys)-1))
    11         return $_target_arr;
    12 
    13     foreach($data as $k=>$v)
    14     {
    15         if($k===$keys[$_index])
    16         {
    17             if($_index==(count($keys)-1))
    18                 $_target_arr[]=$v;
    19             else
    20             {
    21                 if(is_array($v))
    22                     findbykeys($v,$keys,++$_index,$_target_arr);
    23             }
    24         }
    25         else
    26         {
    27             if(is_array($v))
    28                 findbykeys($v,$keys,$_index,$_target_arr);
    29         }
    30     }
    31     return $_target_arr;
    32 }

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

    1 $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');
    2 $data=iconv('GBK', 'UTF-8//TRANSLIT//IGNORE', $data);
    3 preg_match('/^[^(]+(([sS]+));$/',$data,$data);
    4 $data=$data[1];
    5 $cm=json_decode($data,true);
    6 $keys=['comments','images','imgUrl'];
    7 var_dump(findbykeys($cm,$keys));
  • 相关阅读:
    转:浅谈Linux的内存管理机制
    (转)Redis
    检测socket链接是否断开
    linux C 中的volatile使用
    LINUX 下 ipv6 socket 编程
    linux signal 列表
    Linux下异常信号
    linux signal
    转: 关于Linux常用的二进制文件分析方法
    IOI2020 题解
  • 原文地址:https://www.cnblogs.com/GaZeon/p/7323092.html
Copyright © 2011-2022 走看看