【问题标题】:PHP Filtering Multidimensional ArrayPHP过滤多维数组
【发布时间】:2015-04-07 14:22:32
【问题描述】:

我有一个从 JSON 文件回显的大型多维数组。我需要能够根据搜索词对其进行过滤。

Array
(
    [timeline] => Array
        (
            [type] => default
            [date] => Array
                (
                    [0] => Array
                        (
                            [startDate] => 2014
                            [endDate] => 
                            [headline] => AA
                            [text] => Lorem Ipsum
                            [asset] => Array
                                (
                                    [media] => IMAGE_URL
                                    [thumbnail] => 
                                    [credit] => Public Domain, Wikimedia Commons
                                    [caption] => CAPTION_TITLE
                                )

                        )
//...and so on

我需要能够过滤textheadline 键,并返回仅包含给定字符串的值。

【问题讨论】:

  • 所以你需要搜索一个多维数组,你试过什么?你用谷歌搜索过吗,我确定你不是第一个想要搜索数组的人。
  • 我已经尝试使用几个基本的 array_filter 函数,但无法提出任何适用于多维数组的方法。我是 PHP 新手,正在寻找更适合这个特定数组的解决方案。

标签: php json input multidimensional-array filter


【解决方案1】:

像这样?

foreach($array['timeline']['date'] as $entry){
   if(strpos($entry['headline'],$needle) === false || strpos($entry['text'],$needle) === false){
      // nicht gefunden
    }else{
      // gefunden
    }
}

使用 === 很重要,因为如果针位于字符串的开头,则结果可能为 false 或 0。使用 == 也是一样的。

【讨论】:

  • 这个有帮助,但是需要保留数组的原始结构: Array ( [timeline] => Array ( [type] => default [date] => Array ( //只返回子数组包含匹配项
  • 它仍然具有相同的stretchtur,但只是看起来是数组的一部分。如果您想访问层次结构中较高的数组部分,您可以使用键:foreach($array as $key => $entry){}。您可能需要拆分循环以获取数组不同级别的键。
猜你喜欢
  • 1970-01-01
  • 2012-12-04
  • 2018-07-07
  • 2019-11-20
  • 1970-01-01
  • 2020-03-27
  • 2021-07-14
  • 1970-01-01
相关资源
最近更新 更多