array_是否替换早期版本php的替代方案?

array_是否替换早期版本php的替代方案?,php,arrays,Php,Arrays,我希望使用array_replace函数,但我运行的php版本不支持它。我想知道是否有新的人有其他的方法来做这件事 我运行的php版本是5.2.17 我有一个数组,我只想用另一个键匹配的数组替换元素 我无法在服务器上更新php的版本,顺便说一句:(你的意思是这样的 $array; $replacement; foreach ($array as $key => &$value) { if (array_key_exists($key, $replacement)) {

我希望使用array_replace函数,但我运行的php版本不支持它。我想知道是否有新的人有其他的方法来做这件事

我运行的php版本是5.2.17

我有一个数组,我只想用另一个键匹配的数组替换元素


我无法在服务器上更新php的版本,顺便说一句:(

你的意思是这样的

$array;
$replacement;
foreach ($array as $key => &$value) {
  if (array_key_exists($key, $replacement)) {
    $value = $replacement[$key];
  }
}
或者只是

foreach ($replacement as $key => $value) {
  $array[$key] = $value;
}
甚至可能

array_merge ($array, $replacement);

(我目前看不到
array\u merge()
array\u replace()
…)的行为有任何区别。

你的意思是这样的

$array;
$replacement;
foreach ($array as $key => &$value) {
  if (array_key_exists($key, $replacement)) {
    $value = $replacement[$key];
  }
}
或者只是

foreach ($replacement as $key => $value) {
  $array[$key] = $value;
}
甚至可能

array_merge ($array, $replacement);

(我目前看不到
array\u merge()
array\u replace()
…)的行为有任何区别。

如果您想要此函数的真正后端口,可以使用以下代码:

如果(!function_存在('array_replace'))
{
函数数组\u替换(数组和$array,数组和$array1)
{
$args=func_get_args();
$count=func_num_args();
对于($i=0;$i<$count;++$i){
if(是_数组($args[$i])){
foreach($args[$i]作为$key=>$val){
$array[$key]=$val;
}
}
否则{
触发错误(
__函数#.():参数#.($i+1)。“不是数组”,
用户警告
);
返回NULL;
}
}
返回$array;
}
}

多亏了dyer85(at)gmail(dot)com

如果您想要此功能的真正后端口,可以使用以下代码:

如果(!function_存在('array_replace'))
{
函数数组\u替换(数组和$array,数组和$array1)
{
$args=func_get_args();
$count=func_num_args();
对于($i=0;$i<$count;++$i){
if(是_数组($args[$i])){
foreach($args[$i]作为$key=>$val){
$array[$key]=$val;
}
}
否则{
触发错误(
__函数#.():参数#.($i+1)。“不是数组”,
用户警告
);
返回NULL;
}
}
返回$array;
}
}

感谢dyer85(at)gmail(dot)com

这两个函数在处理数字键数组的方式上有很大的不同,array\u merge将重新分配数字键,而array\u replace不会。array\u merge不会在array\u replace时过度写入数字键的值。这两个函数在处理num数组的方式上有很大的不同eric keys,array_merge将重新分配数字键,array_replace将不会。array_merge不会在array_replace()中将数字键的值写得过多。array_replace()中不应将数组作为引用传递@JoryHogeveen哦,我真诚地希望你没有运行比5.3.0更旧的PHP版本…哈哈,不用担心。只是让我的WP插件测试与5.2(TravisCI)兼容,因为这是WP仍然支持的,很遗憾。数组不应该在array_replace()中作为引用传递@JoryHogeveen哦,我真诚地希望你没有运行比5.3.0更旧的PHP版本…哈哈,不用担心。只是让我的WP插件测试与5.2(TravisCI)兼容,因为不幸的是,这是WP仍然支持的。