簡體   English   中英

過濾多維數組-filter_array(PHP)

[英]Filter a multidimensional array - filter_array (PHP)

如何基於[channel]使用array_filter()過濾此多維數組?

Array
(
    [0] => Array
        (
            [268a9d2d25fc2b9765c7cd7b8a768d3e] => Array
                (
                    [dj_name] => Emilian
                    [show_name] => TechnoShow
                    [channel] => techno
                    [show_image] => http://www.digitalark.ro/dieselfm/wp-content/uploads/2016/01/avatar.jpg
                    [time] => 0
                    [time_end] => 1
                    [sun1] => 1
                    [sun2] => 1
                    [sun3] => 1
                    [sun4] => 1
                    [sun5] => 1
                )

        )

    [1] => Array
        (
            [e13268de7c56db42f8aeab2ab4c607f2] => Array
                (
                    [dj_name] => John Doe
                    [show_name] => John Doe`s Trance Show
                    [channel] => trance
                    [show_image] => http://www.digitalark.ro/dieselfm/wp-content/uploads/2016/01/dummy.jpg
                    [time] => 11
                    [time_end] => 11
                    [mon1] => 1
                    [mon2] => 1
                    [tue2] => 1
                    [mon3] => 1
                    [fri3] => 1
                    [mon4] => 1
                    [mon5] => 1
                )

        )

)

結果應僅包含值為“ techno”的數組,例如:

Array
(
    [0] => Array
        (
            [268a9d2d25fc2b9765c7cd7b8a768d3e] => Array
                (
                    [dj_name] => Emilian
                    [show_name] => TechnoShow
                    [channel] => techno
                    [show_image] => http://www.digitalark.ro/dieselfm/wp-content/uploads/2016/01/avatar.jpg
                    [time] => 0
                    [time_end] => 1
                    [sun1] => 1
                    [sun2] => 1
                    [sun3] => 1
                    [sun4] => 1
                    [sun5] => 1
                )

        ))

我試過使用:

$data = array_filter($dataraw, function($fs) use ($genre) {return $fs['channel'] == $genre});

編輯:

$djs = get_posts($args);
foreach ($djs as $dj) {
    $temp = maybe_unserialize(get_post_meta($dj->ID, 'show_data',true));
    if ($temp) $show_data[] = maybe_unserialize(get_post_meta($dj->ID, 'show_data',true));
}


$datax = array_filter($show_data, function($fs) use ($genre) {
 return array_values($fs)[0]['channel'] == $genre;
});

print_r($datax);

我假設您代碼中的解析錯誤是復制/粘貼錯誤。 問題在於傳遞到函數中的元素是一個更深的數組。 嘗試:

return current($fs)['channel'] === $genre;

另外,您可能希望使用===以使結果符合預期。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM