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