首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >多维数组过滤[PHP]

多维数组过滤[PHP]
EN

Stack Overflow用户
提问于 2016-01-26 18:19:12
回答 2查看 186关注 0票数 0

我正在尝试只过滤出此数组的一部分-通过channel

代码语言:javascript
运行
复制
Array
(
    [0] => Array
        (
            [268a9d2d25fc2b9765c7cd7b8a768d3e] => Array
                (
                    [dj_name] => Emilian
                    [channel] => techno
                  )

            [5d1838c3aa6344e3109ab4f0122492f7] => Array
                (
                    [dj_name] => Emilian
                    [channel] => trance
                )
        )

    [1] => Array
        (
            [e13268de7c56db42f8aeab2ab4c607f2] => Array
                (
                    [dj_name] => John Doe             
                    [channel] => trance

                )

            [1aa81b7b123321f79571828600db0f08] => Array
                (
                    [dj_name] => John Doe
                    [channel] => techno
                )

        )

因此,结果应该是(如果通道是催眠):

代码语言:javascript
运行
复制
Array
(
    [0] => Array
        (

            [5d1838c3aa6344e3109ab4f0122492f7] => Array
                (
                    [dj_name] => Emilian
                    [channel] => trance
                )
        )

    [1] => Array
        (
            [e13268de7c56db42f8aeab2ab4c607f2] => Array
                (
                    [dj_name] => John Doe             
                    [channel] => trance

                )


        )

..。我尝试过foreach循环...取消但没有太多的成功..还有array_filter ...

对于foreach,我尝试这样做(但我不知道在循环关闭后如何更新$show_data数组……嗯,我是php的新手:

代码语言:javascript
运行
复制
foreach($show_data as $idindex => $codearray){
            foreach($codearray as $codestring => $paramarray) {       
                        foreach($paramarray as $param => $val) {    
                                if(preg_grep('/trance/', $paramarray)){
                                     unset($paramarray[$val]);
                                  }}}}
        print_r($show_data);

我也尝试过(但如果第一个是催眠,那么它不会过滤掉其他的.即使他们是电子音乐...

代码语言:javascript
运行
复制
$genre = 'trance';
$data = array_filter($dataraw, function($fs) use ($genre) {
 return current($fs)['channel'] === $genre;
});

提前感谢!

EN

回答 2

Stack Overflow用户

发布于 2016-01-26 18:25:03

试试这个:它会帮你的。

代码语言:javascript
运行
复制
$output_array();
$i = 0;
foreach ($show_data as $data) {
    foreach ($data as $subdata) {
        if ($subdata['channel'] == 'trance') {
            $output_array[$i] = $subdata;
        }
    }
    $i++;
}

echo '<pre>';
print_r($output_array);
die;
票数 0
EN

Stack Overflow用户

发布于 2016-01-26 18:31:15

尝试此代码:-

代码语言:javascript
运行
复制
  $result = [];
        foreach($arr as $key=>$val){
                foreach($val as $k=>$v){
                    if($v['channel']=='trance'){
                        $result[$k] = $v;
                    }
                }
        }

  echo '<pre>'; print_r($result);

输出:-

代码语言:javascript
运行
复制
Array
(
    [5d1838c3aa6344e3109ab4f0122492f7] => Array
        (
            [dj_name] => Emilian
            [channel] => trance
        )

    [e13268de7c56db42f8aeab2ab4c607f2] => Array
        (
            [dj_name] => John Doe
            [channel] => trance
        )

)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35011514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档