2011-06-01 146 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