note 110497 added to function.array-diff
| From: | iraitcatgmaildotcom | 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