2013-05-03 34 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