Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.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_Logic - Fatal编程技术网

Php 如果数组为空,如何更新数据?

Php 如果数组为空,如何更新数据?,php,arrays,logic,Php,Arrays,Logic,我想更新空数组。因此我检查为空并想更新原始变量。因此我尝试了&,但它没有更改空数组$array2。我尝试了很多小时,但没有工作 <?php $array1 = array('one','two','three'); $array2 = array(); $array3 = array ('four'); $array4 = array ('five','six'); check([&$array1,&$array2,&$array3,&$array4]);

我想更新空数组。因此我检查为空并想更新原始变量。因此我尝试了
&
,但它没有更改空数组
$array2
。我尝试了很多小时,但没有工作

<?php
$array1 = array('one','two','three');
$array2 = array();
$array3 = array ('four');
$array4 = array ('five','six');
check([&$array1,&$array2,&$array3,&$array4]);
function check($arr){   
    foreach ($arr as $k=>$value) {          
        if(empty($value)){      
            $arr[$k][] = "nothing";
            return $arr[$k];
        }
        else{
            return $arr[$k];
        }
    }
}
var_dump($array2); 
//actual output : empty
//expect output :  0 => string 'nothing'
?>

这将适用于您:

<?php
$array1 = array('one','two','three');
$array2 = array();
$array3 = array ('four');
$array4 = array ('five','six');
list($array1, $array2, $array3, $array4) = check([$array1,$array2,$array3,$array4]);
function check($arr){   
    foreach ($arr as $k => $value) {          
        if(empty($value)){     
            $arr[$k] = "nothing";
        }
    }

    return $arr;
}
var_dump($array2); 
//actual output : string(7) "nothing"
//expect output :  string(7) "nothing"

?>

看看下面的代码

 $array1 = array('one','two','three');
 $array2 = array();
 $array3 = array ('four');
 $array4 = array ('five','six');
 $arr11=check([&$array1,&$array2,&$array3,&$array4]);
 function check($arr){  
    foreach ($arr as $k=>$value) {          
       print_r($value);
       if(empty($value)){     
          $arr[$k] = "nothing";
        }
        else{
           $arr[$k];
        }
     }
   return $arr;
 }

print_r($arr11);
var_dump($array2); 
//actual output : empty
//expect output :  0 => string 'nothing'
它将显示以下结果

Array
(
[0] => Array
    (
        [0] => one
        [1] => two
        [2] => three
    )

[1] => nothing
[2] => Array
    (
        [0] => four
    )

[3] => Array
    (
        [0] => five
        [1] => six
    )

)


string(7) "nothing"

脚本中的“原始变量”是什么?对不起,我指的是$array2,因为它是空的!首先,函数将只检查第一个数组,然后返回。除此之外,passbyreference根本不能这样工作。你必须重新考虑你的方法。
empty($value)==false
意味着
$value
不是空的。我知道了,谢谢@u_Mulder你什么意思?如果您
var\u dump
其他数组,您将看到它们。我在答案中添加了输出。
Array
(
[0] => Array
    (
        [0] => one
        [1] => two
        [2] => three
    )

[1] => nothing
[2] => Array
    (
        [0] => four
    )

[3] => Array
    (
        [0] => five
        [1] => six
    )

)


string(7) "nothing"