我正在尋找使用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