2013-05-03 24 views
0

我有一個數組,看起來像這樣:找到多少次陣列內部存在一些

$numbers = array("332467323232", "750327430375", "332503248632", ...); 

我想獲得的次數,數量數量(或任何其他數字)顯示在我的數組中的每個字符串中。

例子:

$times = array(4, 1, 3, ...); 
+2

有。是否有一個原因,你必須使用正則表達式? – Jon 2013-05-03 13:29:24

+0

我可以使用PHP來實現,但是,正則表達式是一個更短,更乾淨的方法。 – 2013-05-03 13:31:47

+0

我不能說我完全理解你想在這裏使用正則表達式。 3245是否意味着數字32會出現?這是否也意味着你想要計算324,3245,245,45等?正則表達式是一種匹配,驗證和替換的方式,但計數並不是真正的強項。 – melwil 2013-05-03 13:31:51

回答

4

正確答案:

$times=array_map(function($str) { return substr_count($str, "32"); }, $numbers); 

最初的回答(錯,誤解的問題,對不起!):

這裏是一個一個班輪這不使用正則表達式:

echo array_sum(array_map(
        function($str) { return substr_count($str, "32"); }, 
        $numbers)); 
+0

我接受你的答案,但我沒有正確地問我的問題...我正在尋找32出現的時間數假設我的數組中的字符串是除以逗號。進出口。 「32,53」給出了1個外觀,但給出了「437」。我會發佈一個適當的問題。 Thx爲您提供幫助! – 2013-05-03 13:56:50

1

您可能不需要正則表達式,例如:

$numbers = array(
    32323232, # 4 
    12233232, # 2 
    12314232, # 1 
    12349085, # 0 
); 

$result = array(); 

foreach($numbers as $num){ 
    $result[] = substr_count("$num", '32'); 
} 

print_r($result); 

// Array 
// (
//  [0] => 4 
//  [1] => 2 
//  [2] => 1 
//  [3] => 0 
//) 

這應該做你要找的東西。 substr_count on php.net