Rumah  >  Soal Jawab  >  teks badan

PHP如何用array_filter过滤数组?

数据库输出数组是

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => 你好,234
            [cate] =>  生活日记
       )

    [1] => Array
        (
            [id] => 2
            [name] => 79798
            [cate] => 摄影美图

        )

    [2] => Array
        (
            [id] => 3
            [name] => 567567
            [cate] =>  生活日记
       )

)

过滤里面cate = 摄影美图,其它全部保留,效果是

Array
(
   [0] => Array
       (
           [id] => 1
           [name] => 你好,234
           [cate] =>  生活日记
       )

   [1] => Array
       (
           [id] => 2
           [name] => 79798
           [cate] => 生活日记

      )
)

如何用array_filter实现呢? 感觉array_filter不太好用。

迷茫迷茫2735 hari yang lalu805

membalas semua(3)saya akan balas

  • 大家讲道理

    大家讲道理2017-04-10 16:10:48

    啥也不说,直接上代码,可惜php的闭包跟js一样又臭又长:

    $data = [
       [ 'id' => 1, 'name' => '你好,234', 'cate' => '生活日记'],
       [ 'id' => 2, 'name' => '79798', 'cate' => '摄影美图'],
       [ 'id' => 3, 'name' => '567567', 'cate' => '生活日记'],
    ];
    
    $filtered = array_filter($data, function($item){ 
                     return $item['cate'] !== '摄影美图'; 
                });
    print_r($filtered);

    balas
    0
  • PHP中文网

    PHP中文网2017-04-10 16:10:48

    注意看array_filter的第二个参数,第二个参数是一个自定义函数。这个自定义函数是为了设置过滤条件。

    <?php
        $arr = array(
            array('id'=>1, 'cate'=>"生活日记"),
            array('id'=>2, 'cate'=>"摄影美图"),
        );
        var_dump($arr);
        
        function filter($rows){
            if($rows['cate']==="摄影美图"){
                return false;
            }else{
                return true;
            }
        }
        
        $arr = array_filter($arr, 'filter');
        var_dump($arr);
    
    

    balas
    0
  • 阿神

    阿神2017-04-10 16:10:48

    我觉得不用array_filter也能达到目的呀

    <?php   
       $oriArr = array(
           0 => array('id' => '1', 'name' => '你好,234', 'cate' => '生活日记'),
           1 => array('id' => '2', 'name' => '79798', 'cate' => '摄影美图'),
           2 => array('id' => '3', 'name' => '567567', 'cate' => '生活日记'),
       );
    
       $resultArr = array();
       foreach ($oriArr as $key => $value)
       {
           if ($value['cate'] === '摄影美图')
           {
               continue;
           }
           else
           {
               $resultArr[] = $value;
           }
       }
       print_r($resultArr);

    balas
    0
  • Batalbalas