Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
635 views
in Technique[技术] by (71.8m points)

php - Filter multidimensional arrays

Array
(
    [user_mob_1] => Array
        (
            [mob_code] => 06
            [mob] => 069633345
            [type] => 1
            [phone_id] => 0
        )

    [user_mob_2] => Array
        (
            [mob_code] => 07
            [mob] => 07123456
            [type] => 1
            [phone_id] => 
        )

    [user_mob_6] => Array
        (
            [mob_code] => 0
            [mob] => 
            [type] => 1
            [phone_id] => 0
        )

)

The goal is to remove user_mob_* where mob is empty !

The answer is:

foreach($array as $key => $row) {
   if(empty($row['mob'])) unset($array[$key]);
}

Simple, but I'm new in php and first I thinked to use functions like array_filter etc.

All ingenious is simple.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Your idea of using a built-in function like array_filter is a very good one; PHP has lots of these that can make your life easier.

Specifically, array_filter accepts a callback that you can use to customize the filtering logic. This would work:

$filtered = array_filter($array, function($el) { return !empty($el['mob']); });

Here the callback is supplied as an anonymous function.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...