2013-10-17 109 views
0

我有一個數組,其中一些元素充滿了大量的空白和\n。我想刪除這個空白和\n刪除數組中的空白

我一直在使用下面的代碼,但編譯器說我的代碼不適用於數組。

//My code that removes white-space  
$input = preg_replace('/\s+/', ' ', $myArray); 

//Sample of array with white space 
$myArray = array(
    'extra spaces' => '<div>  </div>', 
    'return' => '<b>\n</b>', 
) 

//What I want the array to look like 
$myArray = array(
    'extra spaces' => '<div></div>', 
    'return' => '<b></b>', 
) 
+4

您可能感興趣的PHP [[array_walk()'](http://php.net/manual/en/function.array-walk.php):「應用[a]用戶定義的回調函數給[an]數組的每個元素。「一個簡單的'foreach'循環可能會讓你在那裏。 – showdev

+0

@showdev不想偷你的答案,我剛剛提交了,當我看到你的評論:\ –

+0

@JochemKuijpers無後顧之憂。感謝您發佈您的答案。 – showdev

回答

1

您可以使用foreach循環通過您的陣列中的所有元素來獲得:

foreach($myArray as $key => $val) 
{ 
    $myArray[$key]=preg_replace('/\s+/', ' ', $value); 
} 

我還沒有實際檢查代碼,並沒有以往任何時候都好與正則表達式,但假設您的替換工作正常,應該是好的。

1

試試這個:

// loop through each element and apply the function 
foreach($myArray as $key => $value) { 
    $myArray[$key] = preg_replace('/\s+/', '', $value); 
} 

或做,做這樣的功能,並使用array_walk

請注意,我用空字符串更換您的空白,而不是一個單一的空間(像你和其他答案一樣)。這樣你將完全刪除空白,而不是用空格替換它。

1
  1. 當你調用preg_replace$myArray還沒有定義。的$myArray定義和呼叫切換到preg_replace

    //Sample of array with white space# 
    
    $myArray = array(
        'extra spaces' => '<div>  </div>', 
        'return' => '<b>\n</b>', 
    ) 
    
    //My code that removes white-space  
    $input = preg_replace('/\s+/', ' ', $myArray); 
    
  2. 如果你想'<div> </div>'成爲'<div></div>',你不應該' '取代'/\s+/',但''

  3. \n僅在雙引號內被視爲換行符(因此匹配'/\s+/'),而不是在單引號內。將'<b>\n</b>'更改爲"<b>\n</b>"或修復您的正則表達式。

+2

我的猜測是,這是他試圖完成的一個簡單的草圖,因此'帶白色空間的數組示例'和'我想要的數組看起來像' –

+0

我不猜;我讀書寫字。 – Oswald

+0

對不起,我甚至提到它.. –