note 110497 added to function.array-diff

From: Date: Mon, 29 Oct 2012 16:57:21 +0000
Subject: note 110497 added to function.array-diff
Groups: php.notes 
Request: Send a blank email to php-notes+get-191580@lists.php.net to get a copy of this message
<? function array_filter_recursive(array $input, $fn = null) { $defaultfn = function($val) { return (!empty($val)); }; if (!$fn) $fn = $defaultfn; $result = array(); foreach ($input as $key => $val) { if (is_array($val)) { $recur = array_filter_recursive($val, $fn); if ($recur !== null) $result[$key] = $recur; } else if ($fn) { if ($fn($val)) { $result[$key] = $val; } } } if (!empty($result)) return $result; } // ANONYMOUS CALLBACK FUNCTION $fn = function ($value) { if ($value === 0 || strpos($value,'empty') || $value===null) return false; else return true; }; // PRE FILTER TEST DATA $preFilter = array( 'name' => 'hamed', 'family'=>'pk', 'postal_code'=>7185633282, 'point'=>0, 'blah'=>null, 'b' => array( 'drop' => 'this is empty!', 'keep' => 'keep me!', ), ); // EXAMPLE USAGE CODE echo '<pre>'; echo '// print_r($preFilter);' . "\n"; print_r($preFilter); $postFilter = array_filter_recursive($preFilter, $fn); echo "\n"; echo '// print_r($postFilter);' . "\n"; print_r($postFilter); /* *************** OUTPUT ********************** // print_r($preFilter); Array ( [name] => hamed [family] => pk [postal_code] => 7185633282 [point] => 0 [blah] => [b] => Array ( [drop] => this is empty! [keep] => keep me! ) ) // print_r($postFilter); Array ( [name] => hamed [family] => pk [postal_code] => 7185633282 [b] => Array ( [keep] => keep me! ) ) */ ---- Server IP: 69.147.83.199 Probable Submitter: 2.145.103.133 ---- Manual Page -- http://www.php.net/manual/en/function.array-diff.php Edit -- https://master.php.net/note/edit/110497 Del: integrated -- https://master.php.net/note/delete/110497/integrated Del: useless -- https://master.php.net/note/delete/110497/useless Del: bad code -- https://master.php.net/note/delete/110497/bad+code Del: spam -- https://master.php.net/note/delete/110497/spam Del: non-english -- https://master.php.net/note/delete/110497/non-english Del: in docs -- https://master.php.net/note/delete/110497/in+docs Del: other reasons-- https://master.php.net/note/delete/110497 Reject -- https://master.php.net/note/reject/110497 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#191580) next »