2013-05-03 4 views
0

У меня есть массив, который выглядит следующим образом:найти сколько раз число существует внутри массива

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

Я хотел бы получить несколько раз, что число (или любое другое число) появляется в каждой строке внутри моего массива.

Пример:

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

Существует. Есть ли причина, почему вы должны использовать регулярное выражение? – Jon

+0

Я могу сделать это с помощью php, однако регулярное выражение представляет собой более короткий и более чистый подход. –

+0

Я не могу сказать, что я точно понимаю, что вы хотите использовать regex для здесь. 3245 означает, что число 32 появляется? Будет ли это означать, что вы хотите считать 324, 3245, 245, 45 и т. Д.? Regex - это способ сопоставления, проверки и замены, но подсчет не является действительно сильным. – melwil

ответ

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 вид, но «43,27» дает 0. Я отправлю правильный вопрос. Thx за вашу помощь! –

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

Смежные вопросы