我正在寻找使用array_replace函数,但我运行的PHP版本不支持它。我想知道是否有人有新的做法吗?阵列替代早期版本的PHP?
PHP我运行的版本是5.2.17
我有一个数组,我只是想用另一个数组,它的键匹配替换元素。
我无法更新服务器上的PHP版本BTW :(
我正在寻找使用array_replace函数,但我运行的PHP版本不支持它。我想知道是否有人有新的做法吗?阵列替代早期版本的PHP?
PHP我运行的版本是5.2.17
我有一个数组,我只是想用另一个数组,它的键匹配替换元素。
我无法更新服务器上的PHP版本BTW :(
你的意思是这样的吗?
$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()
行为有什么区别...)
如果你想要这个功能的真正的反向移植,你可以使用此代码: 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
array_replace() – 2018-02-19 23:52:30
@JoryHogeveen不应该作为参考传递数组哦哦,我真诚地希望你没有运行比5.3.0更早的PHP版本... – SimonSimCity 2018-02-20 05:11:59
哈哈没有后顾之忧。只是让我的WP插件测试与5.2(TravisCI)兼容,因为这是WP仍然支持不幸的事情。 – 2018-02-21 11:24:56
是的,就像那样,谢谢! – flyersun 2011-06-01 09:09:17
非常有用谢谢你! – flyersun 2011-06-01 09:21:59
这两个函数与它们如何处理数字键的数组有很大的区别,array_merge将重新分配数字键,而array_replace不会。 array_remove不会覆盖数组键的值,而array_replace将不会。 – mikewasmike 2014-11-10 13:27:09