用于早期版本的php的array_replace替代品?

时间:2011-06-01 09:03:20

标签: php arrays

我正在寻找使用array_replace函数,但我正在运行的php版本不支持它。我想知道是否有任何新的任何替代方法这样做?

我正在运行的php版本是5.2.17

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

我无法在服务器上更新php的版本btw :(

2 个答案:

答案 0 :(得分: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);

(我目前认为array_merge()array_replace()的行为没有任何差异......)

答案 1 :(得分: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