2014-03-12 92 views
0

假設我有一個這樣的數組array('first item', 'seconditem', 'third item') 現在我想搜索變量中的所有項目(使用foreach,因爲我假設我不知道有多少物品會在裏面數組) 我怎麼會刪除所有空格,並將它們添加到新陣列,以幾乎相同的結構,但它們將顯示爲:代替搜索數組中的項目,並從中創建新變量

array('firstitem','seconditem','thirditem') 

array('first item', 'seconditem', 'third item') 

由PHP的方式..

+0

您已經足夠了解使用'foreach',所以請嘗試解決方案並將其發佈到此處。在尋求幫助之前,您至少需要*嘗試*解決您的問題。 – meagar

+0

是的,但問題是我不知道什麼函數被稱爲處理在字符中搜索的東西,並刪除它們; /老實說,不只是要求餵食代碼,我真的想學習如何處理數組這個。 – user3332590

+0

@ user3332590:它被稱爲'str_replace'。它直接支持數組,所以你甚至不需要'foreach'。 – Jon

回答

0

試試這個:

function removeSpaces($input) { 
    foreach (array_keys($input) as $i) { 
     if (is_string($input[$i])) { 
      $input[$i] = preg_replace('/\s+/', '', $input[$i]); 
     } elseif (is_array($input[$i])) { 
      $input[$i] = removeSpaces($input[$i]); 
     } 
    } 
    return $input; 
} 

用法:

$array = array('key1' => 'test item', array('first item', 117 => 'seconditem', 'third item')); 

$array = removeSpaces($array); 

print_r($array); 

輸出:

Array 
(
    [key1] => testitem 
    [0] => Array 
     (
      [0] => firstitem 
      [117] => seconditem 
      [118] => thirditem 
     ) 

) 

這個函數使用自定義鍵遞歸和安全! :)

+0

我們去了,preg_replace()是我在找的東西,不需要循環,因爲我可以使用foreach,謝謝 – user3332590

+1

@ReeCube:根本不需要循環:'$ input = preg_replace('/ \ s + /','',$ input)'。 – Jon

+0

@Jon是不需要循環,但如果你希望你的腳本也可以和數組和對象一起工作,你的方法將會拋出異常,**這個函數是解決問題的安全方式** – ReeCube

0

如何

$arr = array('firstitem', 'second item', 'third item'); 
array_walk($arr, function(&$value, $key) { $value = str_replace(' ', '', $value); }); 
print_r($arr); 

給人

Array 
(
    [0] => firstitem 
    [1] => seconditem 
    [2] => thirditem 
) 

如果你不想原始數組改變呢,首先將它複製($arr2 = $arr);

相關問題