我有一个多维数组,可以是任何大小或深度。我基本上试图用值替换空值,但只在某些情况下。下面是该阵列的一个例子,这是相当大的,但我想说明我的观点还有:复制多维数组,但替换空值的递归PHP函数
[field_ter] =>
[field_title] => Array
(
[0] => Array
(
[value] =>
)
)
[field_firstnames] => Array
(
[0] => Array
(
[value] => test9
)
)
[field_birth] => Array
(
[0] => Array
(
[value] =>
)
)
[field_postal] => Array
(
[0] => Array
(
[value] =>
)
)
[group_certificates] => Array
(
[0] => Array
(
[_delta] => 0
[field_cert_details] => Array
(
[value] =>
)
[field_cert_issuedate] => Array
(
[value] => Array
(
[date] =>
)
)
[field_cert_expiry] => Array
(
[value] => Array
(
[date] =>
)
)
[field_cert_issue_country] => Array
(
[value] =>
)
[field_cert_limits] => Array
(
[value] =>
)
)
[1] => Array
(
[_delta] => 1
[field_cert_details] => Array
(
[value] =>
)
[field_cert_issuedate] => Array
(
[value] => Array
(
[date] =>
)
)
[field_cert_expiry] => Array
(
[value] => Array
(
[date] =>
)
)
[field_cert_issue_country] => Array
(
[value] =>
)
[field_cert_limits] => Array
(
[value] =>
)
)
)
我试图做的是发现是空的数组中的任何元素,然后替换为空值具有价值。我有一个空的元素没有被替换的例外数组。这是函数,我目前工作:
function check_empty(&$array) {
$exceptions = array('changed', 'form_build_id','date', 'status', 'op');
// This is the array we will return at the end of the function
$new_array = array();
foreach($array as $key => $value) {
if(is_array($value)) {
check_empty($value);
}
elseif ($value == '' && !in_array($key, $exceptions)) {
$new_array[$key] = '$$$';
}
else {
$new_array[$key] = $value;
}
}
return $new_array;
}
有人能帮助我调整我的功能或指向我一个更好的办法的方向是什么?我尝试了array_walk_recursive,但它不适用于我的数组。
请参考http://stackoverflow.com/editing-help关于如何格式化你的问题的帮助。在这里,我们使用一种名为Markdown的替代通常的HTML。 textarea上方有一些工具栏图标可以帮助您进行格式设置。欢迎来到这个网站! – BoltClock 2011-01-28 12:25:04