复制多维数组但替换空值的递归PHP函数
我有一个多维数组,可以是任何大小或深度。我基本上是尝试用一个值替换空值,但仅在某些情况下。这是一个数组示例,它非常大,但我想很好地说明我的观点:复制多维数组但替换空值的递归PHP函数,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有一个多维数组,可以是任何大小或深度。我基本上是尝试用一个值替换空值,但仅在某些情况下。这是一个数组示例,它非常大,但我想很好地说明我的观点: [field_ter] => [field_title] => Array ( [0] => Array ( [value] => ) ) [field_firstnames] => Array
[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\u walk\u recursive,但它不适用于我的数组
if(is_array($value)) {
check_empty($value);
}
在这里,您不会将结果值返回到任何地方。可能这就是问题所在您需要分配递归的
check\u empty的返回值
:
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)) {
$new_array[$key] = check_empty($value);
}
elseif ($value == '' && !in_array($key, $exceptions)) {
$new_array[$key] = '$$$';
}
else {
$new_array[$key] = $value;
}
}
return $new_array;
}
有关如何设置问题格式的帮助,请参阅。在这里,我们使用一种叫做Markdown的东西来代替通常的HTML。文本区域上方有一些工具栏图标可以帮助您设置格式。欢迎来到这个网站!太好了,非常感谢。有点业余的错误!