使用变量计算数组中的值的数量

时间:2016-11-16 19:33:34

标签: php arrays

我正在尝试计算某个值在数组中出现的次数。除了这个值总是递增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-在数组中显示的次数?

4 个答案:

答案 0 :(得分: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;
                                    }));

答案 1 :(得分: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

?>

答案 2 :(得分:0)

通过提供部分字符串和目标数组来计算值的快速函数 注意:搜索不区分大小写。

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

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

答案 3 :(得分:-3)

我不确定你理解你的问题。万一,抱歉。 第一种方法可以是合并两个数组(参见:array_merge)和删除重复项(参见:array_unique)然后获取元素(参见:count)。 第二种方法可以添加第二个数组的第一个数组元素,检查第一个数组中是否存在元素(参见:in_array),然后计算它(参见:count)。