PHP。计算foreach循环中满足特定条件的字符串数
我试图在PHP。计算foreach循环中满足特定条件的字符串数,php,foreach,count,Php,Foreach,Count,我试图在foreach循环中找到满足某些条件的字符串数。这就是我迄今为止所尝试的: <?php $list = $item->getProperty(); $n = 0; foreach($list as $single) { $designation = $single->getPropertyName(); // var_dump($designation); outputs 150 strings if (strpos($designation, 'foo
foreach
循环中找到满足某些条件的字符串数。这就是我迄今为止所尝试的:
<?php
$list = $item->getProperty();
$n = 0;
foreach($list as $single) {
$designation = $single->getPropertyName(); // var_dump($designation); outputs 150 strings
if (strpos($designation, 'foo') === 0) { // var_dump($designation); outputs 5 strings containing 'foo' in their designation names
$n++;
echo count($n);
}
}
?>
echo计数($n)
返回11111
而不是返回5
,这是我想要获得的值
有人能帮我一点忙吗?
如果您想以更实用、更优雅的方式实现同样的功能,您可以使用
<?php
$list = $item->getProperty();
$n = 0;
foreach($list as $single) {
$designation = $single->getPropertyName(); // var_dump($designation); outputs 150 strings
if (strpos($designation, 'foo') === 0) { // var_dump($designation); outputs 5 strings containing 'foo' in their designation names
$n++;
}
}
echo $n;
可读性较差但更优雅的单线解决方案如下所示:
array_reduce($item->getProperty(), function($sum, $single) { return (strpos($single->getPropertyName(), 'foo') === 0) ? ++$sum : $sum; }
现在我们有了,如果您运行的是PHP 7.4,您可以使用它:
array_reduce($item->getProperty(),
fn($sum, $single) => (strpos($single->getPropertyName(), 'foo') === 0) ? ++$sum : $sum);
如果您想以更实用、更优雅的方式实现同样的功能,您可以使用
可读性较差但更优雅的单线解决方案如下所示:
array_reduce($item->getProperty(), function($sum, $single) { return (strpos($single->getPropertyName(), 'foo') === 0) ? ++$sum : $sum; }
现在我们有了,如果您运行的是PHP 7.4,您可以使用它:
array_reduce($item->getProperty(),
fn($sum, $single) => (strpos($single->getPropertyName(), 'foo') === 0) ? ++$sum : $sum);
1) 您正在对整数(它需要一个数组)使用count
(函数)<代码>$n
已经是您的计数。2) 您希望在循环后检查/显示其值,而不是在每次迭代时。1)您正在整数上使用count
(函数)(它需要一个数组)<代码>$n已经是您的计数。2) 您希望在循环后检查/显示其值,而不是在每次迭代时。