Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
复制多维数组但替换空值的递归PHP函数_Php_Arrays_Multidimensional Array - Fatal编程技术网

复制多维数组但替换空值的递归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。文本区域上方有一些工具栏图标可以帮助您设置格式。欢迎来到这个网站!太好了,非常感谢。有点业余的错误!