2011-06-01 96 views
0

我正在寻找使用array_replace函数,但我运行的PHP版本不支持它。我想知道是否有人有新的做法吗?阵列替代早期版本的PHP?

PHP我运行的版本是5.2.17

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

我无法更新服务器上的PHP版本BTW :(

回答

3

你的意思是这样的吗?

$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); 

(I curr ently看不到的array_merge()array_replace()行为有什么区别...)

+0

是的,就像那样,谢谢! – flyersun 2011-06-01 09:09:17

+0

非常有用谢谢你! – flyersun 2011-06-01 09:21:59

+3

这两个函数与它们如何处理数字键的数组有很大的区别,array_merge将重新分配数字键,而array_replace不会。 array_remove不会覆盖数组键的值,而array_replace将不会。 – mikewasmike 2014-11-10 13:27:09

2

如果你想要这个功能的真正的反向移植,你可以使用此代码: http://www.php.net/manual/fr/function.array-replace.php#92549

if (!function_exists('array_replace')) 
{ 
    function array_replace(array &$array, array &$array1) 
    { 
    $args = func_get_args(); 
    $count = func_num_args(); 

    for ($i = 0; $i < $count; ++$i) { 
     if (is_array($args[$i])) { 
     foreach ($args[$i] as $key => $val) { 
      $array[$key] = $val; 
     } 
     } 
     else { 
     trigger_error(
      __FUNCTION__ . '(): Argument #' . ($i+1) . ' is not an array', 
      E_USER_WARNING 
     ); 
     return NULL; 
     } 
    } 

    return $array; 
    } 
} 

感谢dyer85( at)gmail(dot)com

+0

array_replace() – 2018-02-19 23:52:30

+0

@JoryHogeveen不应该作为参考传递数组哦哦,我真诚地希望你没有运行比5.3.0更早的PHP版本... – SimonSimCity 2018-02-20 05:11:59

+0

哈哈没有后顾之忧。只是让我的WP插件测试与5.2(TravisCI)兼容,因为这是WP仍然支持不幸的事情。 – 2018-02-21 11:24:56