2013-04-04 54 views
4

替換值I有像陣列格式:在多維數組

Array 
(
    [Australia] => Array 
     (
      [0] => [1990,0.01], 
      [1] => [1991,0.02], 
      [2] => [1992,0.02], 
      [3] => [1993,0.02], 
      [4] => [1994,0.02], 
      [5] => [1995,0.02], 
      [6] => [1996,0.02], 
      [7] => [1997,0.02], 
      [8] => [1998,0.02], 
      [9] => [1999,0.02], 
      [10] => [2000,0.02], 
      [11] => [2001,0.02], 
      [12] => [2002,0.02], 
      [13] => [2003,0.02], 
      [14] => [2004,0.02], 
      [15] => [2005,0.02], 
      [16] => [2006,0.02], 
      [17] => [2007,0.02], 
      [18] => [2008,0.02], 
      [19] => [2009,empty], 
      [20] => [2010,empty], 
      [21] => [2011,empty], 
      [22] => [2012,empty], 
      [23] => [2013,empty], 
      [24] => [2014,empty], 
      [25] => [2015,empty] 
     ) 

    [Pakistan] => Array 
     (
      [0] => [1990,0.00], 
      [1] => [1991,0.00], 
      [2] => [1992,0.00], 
      [3] => [1993,0.00], 
      [4] => [1994,0.00], 
      [5] => [1995,0.00], 
      [6] => [1996,0.00], 
      [7] => [1997,0.00], 
      [8] => [1998,0.00], 
      [9] => [1999,0.00], 
      [10] => [2000,0.00], 
      [11] => [2001,0.00], 
      [12] => [2002,0.00], 
      [13] => [2003,0.00], 
      [14] => [2004,0.01], 
      [15] => [2005,0.01], 
      [16] => [2006,0.00], 
      [17] => [2007,0.00], 
      [18] => [2008,0.00], 
      [19] => [2009,empty], 
      [20] => [2010,empty], 
      [21] => [2011,empty], 
      [22] => [2012,empty], 
      [23] => [2013,empty], 
      [24] => [2014,empty], 
      [25] => [2015,empty] 
     ) 
) 

,我想更換「空」與而不改變所述陣列結構和元件位置。我堅持怎麼辦..

回答

5

可以使用array_walk_recursive功能:

function replace_empty(&$item, $key) { 
    $item = str_replace('empty', '0', $item); 
} 

array_walk_recursive($your_array, 'replace_empty'); 
+0

哦,謝謝哥們.... :) – 2013-04-04 10:21:03

+0

@ m4t1t0 +1快速回答。 – 2013-04-04 10:35:42

0

我會foreach在這兩個指數(未測試):

foreach($array as $country){ 
    foreach($country as &$field){ 
    if($field[1] == 'empty'){ 
     $field[1] = 0; 
    } 
    } 
} 

(我假設empty是一個字符串)

編輯:

如果這個[1990,0.00]不是一個數組而是一個字符串,你可以用str_replace代替

foreach($array as $country){ 
    foreach($country as &$field){ 
    $field = str_replace('empty', '0.00', $field); 
    } 
    } 
} 
2

您可以使用array_walk_recursive功能,用一個回調函數會被替換0empty


例如,考慮到你的數組聲明是這樣的:

$myArray[0] = array(23, empty, 43, 12); 
$myArray[1] = array(empty, empty, 53, 19); 

注:我認爲你犯了一個錯字,和你的數組不包含只是一個字符串,但有幾個子元素。


你可以使用這種代碼:

array_walk_recursive($myArray, 'replacer'); 
var_dump($myArray); 


用下面的回調functon:

function replacer(& $item, $key) { 
    if ($item === empty) { 
     $item = 0; 
    } 
} 

需要注意的是:

  • 第一個參數是PAS sed參考!
    • 這意味着修改它會修改相應的值數組中
  • 我使用===運營商比較


你會得到下面的輸出:

array(
    0 => 
    array 
     0 => int 23 
     1 => int 0 
     2 => int 43 
     3 => int 12 
    1 => 
    array 
     0 => int 0 
     1 => int 0 
     2 => int 53 
     3 => int 19)