天天看點

PHP array_filter 練習

/*
 * array_filter() 用回調函數過濾數組中的元素
 * array_filter(array,callbackfunction);array and callbackfunction 必填
 * 該函數把輸入數組中的每個鍵值傳給回調函數。如果回調函數傳回 true,則把輸入數組中的目前鍵值傳回結果數組中。數組鍵名保持不變。
 * */

//用例1:
$arr = [
   ['id'=>1,'ins_id'=>101,'status_desc'=>'駁回'],
   ['id'=>2,'ins_id'=>102,'status_desc'=>'拒絕'],
   ['id'=>3,'ins_id'=>103,'status_desc'=>'撤銷'],
   ['id'=>4,'ins_id'=>104,'status_desc'=>'已發送'],
   ['id'=>5,'ins_id'=>105,'status_desc'=>'運作中'],
];


$validReview = array_filter($arr,function ($review){
    return !in_array($review['status_desc'],['駁回','拒絕','撤銷']);
});


var_dump($validReview);


// 用例1結果:
/*
 *
 array(2) {
  [3]=>
  array(3) {
    ["id"]=>
    int(4)
    ["ins_id"]=>
    int(104)
    ["status_desc"]=>
    string(9) "已發送"
  }
  [4]=>
  array(3) {
    ["id"]=>
    int(5)
    ["ins_id"]=>
    int(105)
    ["status_desc"]=>
    string(9) "運作中"
  }
}
*/


//用例2: 過濾 diary log
$arr = [
    ['id'=>1,'cate'=>'diary_log'],
    ['id'=>2,'cate'=>'photograph_log']
];

function filter($var){
    if($var['cate'] == 'diary_log') {
        return false;
    }
    return true;
}

$data = array_filter($arr,'filter');
var_dump($data);

/*
 * 
 array(1) {
  [1]=>
  array(2) {
    ["id"]=>
    int(2)
    ["cate"]=>
    string(14) "photograph_log"
  }
}*/

           
上一篇: array_filter