PHP中的数组运算符?

$test = array('hi');
$test += array('test','oh');
var_dump($test);

是什么+意味着在PHP数组?


从PHP语言操作员手册引用

+运算符返回附加到左侧数组的右侧数组; 对于这两个数组中存在的键,将使用左侧数组中的元素,并忽略右侧数组中的匹配元素。

所以,如果你这样做

$array1 = ['one',   'two',          'foo' => 'bar'];
$array2 = ['three', 'four', 'five', 'foo' => 'baz']; 

print_r($array1 + $array2);

你会得到

Array
(
    [0] => one   // preserved from $array1 (left-hand array)
    [1] => two   // preserved from $array1 (left-hand array)
    [foo] => bar // preserved from $array1 (left-hand array)
    [2] => five  // added from $array2 (right-hand array)
)

所以+的逻辑等同于下面的代码片段:

$union = $array1;

foreach ($array2 as $key => $value) {
    if (false === array_key_exists($key, $union)) {
        $union[$key] = $value;
    }
}

如果您对C级实施负责人的细节感兴趣

  • PHP-SRC /的Zend / zend_operators.c

  • 请注意,该+array_merge()将数组组合的方式不同:

    print_r(array_merge($array1, $array2));
    

    会给你

    Array
    (
        [0] => one   // preserved from $array1
        [1] => two   // preserved from $array1
        [foo] => baz // overwritten from $array2
        [2] => three // appended from $array2
        [3] => four  // appended from $array2
        [4] => five  // appended from $array2
    )
    

    有关更多示例,请参阅链接页面


    我发现使用这个最好的例子是在一个配置数组中。

    $user_vars = array("username"=>"John Doe");
    $default_vars = array("username"=>"Unknown", "email"=>"no-reply@domain.com");
    
    $config = $user_vars + $default_vars;
    

    如其所暗示的, $default_vars是默认值的数组。 $user_vars数组将覆盖$default_vars定义的值。 $user_vars中的任何缺失值现在都是来自$default_vars的缺省值。

    这将print_r作为:

    Array(2){
        "username" => "John Doe",
        "email" => "no-reply@domain.com"
    }
    

    我希望这有帮助!


    该运算符接受两个数组的联合(与array_merge相同,不同之处在于,array_merge重复的键将被覆盖)。

    数组运算符的文档可以在这里找到。

    链接地址: http://www.djcxy.com/p/1821.html

    上一篇: + operator for array in PHP?

    下一篇: What does this ~ operator mean here?