2016-11-16 73 views
0

我正在計算某個數組在某個數組中出現的次數。除了這個值總是會增加1,並且數組中有這些值的未知數。使用變量計算數組中值的個數

實施例:

$first = array('my-value-1','my-value-2','my-value-3'); 

$second = array('my-value-1','my-value-2','my-value-3', 'my-value-4', 'my-value-5'); 

我的目標是能夠檢索用於$first計數3和用於在上面的例子$second的5的計數。

數組中可能有其他值,但我唯一有興趣計數的值是以my-value-開頭的值。

我不會知道數組中的值的數量,但它們始終以my-value-開頭,並在最後添加一個數字。

有沒有一種方法可以統計my-value-在某種通配符中出現的次數?

+0

這似乎是一個**的foreach的簡單組合**環或** ** array_map和[strpos](http://php.net/manual/ en/function.strpos.php) – Mihailo

+0

標準PHP'count($ arrayname)'給你在一個數組中有多少個事件 – RiggsFolly

+1

如果你在數組中有某些不以'my-value-'開頭的東西,那麼它會已經有用地表明,在你提供的樣品中 – RiggsFolly

回答

7

使用正則表達式來過濾數組並計算匹配的值。你也可以使用^,迫使它在開始時^my-value-\d+

$count = count(preg_grep('/my-value-\d+/', $first)); 

你也可以做這種方式。同樣,你可以使用=== 0,而不是使之匹配開頭:

$count = count(array_filter($first, function($v) { 
             return strpos($v, 'my-value-') !== false; 
            })); 
-3

我不知道有良好的理解你的問題。萬一,對不起。 第一種方法可以是關於合併兩個數組(請參閱:array_merge)並刪除重複數據(請參閱array_unique),然後獲取元素(請參閱:count)。 第二種方法可以添加到第二個數組的第一個數組元素中,檢查元素是否存在於第一個數組中(請參閱:in_array),然後對其進行計數(請參閱:count)。

0

根據你的問題,「他們總是以我的價值開始,並且最後加上一個數字。」因此,您不需要正則表達式,只需使用PHP的內置count()函數即可計算數組中的項數。請嘗試:

<?php 
$first = array('my-value-1','my-value-2','my-value-3'); 
$second = array('my-value-1','my-value-2','my-value-3', 'my-value-4', 'my-value-5'); 

$size_of_first = count($first); 
$size_of_first = count($first); 

echo $size_of_first; //Will echo 3 
echo $size_of_first; //Will echo 5 

?> 
+0

重新可能是其他值 –

+0

是的,這是我面臨的問題是,會有其他價值。不過,我有興趣計算的值始終以'my-value-'開頭。我會澄清原來的問題。 – ScottD

+0

@ScottD那麼在你的問題中顯示這種可能性。我們不是**千里眼**我們只能根據問題 – RiggsFolly

0

快速函數通過提供部分字符串和目標數組來計數值。
注意:搜索不區分大小寫。

function countValues($prefix, $array) { 
    return count(array_filter($array, function($item) use ($prefix) { 
     return stripos($item, $prefix) !== false; 
    })); 
} 

用法:
$count = countValues('my-value', $first);