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

Php 用另一个值覆盖数组值

Php 用另一个值覆盖数组值,php,arrays,Php,Arrays,我喜欢学习如何组合两个具有相同键但不同值的关联数组,就像我们在jQuery中使用var options=$.extend(默认值,选项)时所做的那样 我正在寻找内置的功能,而不是编写一个完整的新函数来提供此功能。当然,如果你有整洁的东西,就告诉我 谢谢 $result = array_merge($first, $second); 只要你处理的是字符串键,它就完全是你想要的。这两个数组是组合的,如果这两个数组具有相同的键,则来自$second的值将覆盖来自$first的值。您可以在第二个数组上

我喜欢学习如何组合两个具有相同键但不同值的关联数组,就像我们在jQuery中使用
var options=$.extend(默认值,选项)时所做的那样

我正在寻找内置的
功能,而不是编写一个完整的新函数来提供此功能。当然,如果你有整洁的东西,就告诉我

谢谢

$result = array_merge($first, $second);

只要你处理的是字符串键,它就完全是你想要的。这两个数组是组合的,如果这两个数组具有相同的键,则来自
$second
的值将覆盖来自
$first
的值。您可以在第二个数组上迭代,并设置第一个数组中的每个元素。

我认为或是您正在搜索的函数。

我认为
数组
array\u combine()
是您正在寻找的函数
array\u merge()
可用于合并进一步调用的两个数组。
array\u combine()
数组的键与另一个数组的值。

如果您确切知道要覆盖哪个键,可以这样做 $first['name']=“贾斯汀”;
否则,您必须使用array\u merge

我从未找到满足此(简单)需求的内置函数,因此我开发了一个自定义函数,以便使用$override数组覆盖$default数组:

function array_override( $default, $override )
{
    foreach( $default as $k=>$v )
    {
        if( isset( $override[$k] ) ) $default[$k] = $override[$k];
    }
    return $default;
}

如您所见,只有在$override数组上设置了$default中的值时,$default中的值才会被覆盖;否则,$默认值将保留在返回的数组中。

+1表示
数组\u combine()
。PHP有很多我喜欢的内置函数。为什么对
array\u combine()
使用+1呢<如果您使用了OP中描述的数组,那么代码>数组组合()
在这里不会起任何作用。
数组组合()
将键数组与值数组组合在一起。是的,它有一个小缺点。数组_merge将重新排列数字键!因此,如果数组中有数字键(例如数字常量值),则无法正确使用array\u merge。
function array_override( $default, $override )
{
    foreach( $default as $k=>$v )
    {
        if( isset( $override[$k] ) ) $default[$k] = $override[$k];
    }
    return $default;
}