2015-02-23 17 views
1

如何計算數字與PHPPHP:如何計數?

$mynumbers="0855 468 4864 63848 1486"; //This is my variable, the pattern has to be like this, each number is separated by a space. 
echo "There are 5 numbers in your variable"; 

它應該返回: 5

我怎麼做,我知道有str_word_count但只計算的話不是數字。

+1

拆分空格上的字符串並計算您獲得的項目數。如果你需要忽略非數字值(例如'ignorethis 123和this'),那麼你可以遍歷結果中的每個項目,並且如果它們被認爲是數字,則增加一個計數器。 – GoBusto 2015-02-23 10:35:15

+1

使用,例如, '$ exploded = explode('',$ mynumbers); echo'There''.count($ exploded)'。'數字在你的變量中;';' – lmarcelocc 2015-02-23 10:36:55

+0

幾乎所有的解決方案都是矯枉過正的......如果你確定這個字符串只包含數字和空格,你應該計算空格並添加一個。如果你想在將來有數組,使用爆炸:)。 – 2015-02-23 10:54:28

回答

3

這應該爲你工作:

$str = "0855 468 4864 63848 1486"; 
preg_match_all("/\d+/", $str, $matches); 
echo count($matches[0]); 

輸出:

5 
+0

你能解釋一下''/ \ d + /''做什麼嗎? – Lin 2015-02-23 10:38:26

+2

@林當然!這是一個正則表達式,'\ d'匹配'[0-9]',量詞'+' - >是無限次的(貪婪) – Rizier123 2015-02-23 10:40:42

+0

lol,爲什麼是投票? – Rizier123 2015-02-23 11:10:56

2

您可以嘗試explode()功能,它像:

$mynumbers="0855 468 4864 63848 1486"; 
$values = explode(" ", $mynumbers); 
echo count($values); 

希望它可以幫助

2

使用 explode()例如:

$mynumbers = "0855 468 4864 63848 1486"; 
$exploded = explode(' ', $mynumbers); 
echo 'There are '.count($exploded).' numbers in your variable.'; 
0

簡單的單行分辨率:

$numCount = count(array_map(function($value){return is_numeric($value);}, explode(' ', $mynumbers))); 

我們exlplode串入的話,那麼從結果數組只返回數值和計數。