我通过互联网搜索没有运气。我有整数数组,我想检查我的数组是否包含正值。
我的数组
$Myarray = {1,3,7,-6,-9,-23,-8};
我试图使用in_array() function
但没有运气;
有什么帮助吗?
答案 0 :(得分:4)
一个简单的foreach
?
foreach($Myarray as $v)
{
if($v>0)
{
echo "Array contains a +ve value";
break;
}
}
另一种方式是......
$Myarray = array(-1,-3,-7,-6,-9,-23,-8);
rsort($Myarray);
echo ($Myarray[0] > 0) ? "Array contains +ve value" : "Array does not contain +ve value";
答案 1 :(得分:0)
我会使用数组缩减:
$result = array_reduce($Myarray, function ($result, $num) { return $result || $num > 0; });
if ($result) {
echo "Yes, there's at least one positive number in there.";
}
如果您的数组非常大,您需要另一个不会迭代整个数组的解决方案,但是对于小数组,这很好。
答案 2 :(得分:0)
简单的一个班轮:
if (count(array_filter([-23], function($v){ return ($v >= 1); }))) echo "has positive values\n";
以函数形式:
function array_positive($arr) {
return (bool) count(array_filter($arr, function($v){ return ($v >= 1); }));
}
php > var_dump(array_positive([-23]));
bool(false)
php > var_dump(array_positive([-23, 12]));
bool(true)
与上面的其他示例一样,它通过循环遍历数组来工作。不同之处在于我的示例创建了一个仅包含正值的新数组(这是array_filter的返回值),获取新数组的大小,然后将其转换为布尔值。
您可以轻松地将其更改为仅返回数组中正值的函数:
function array_positive_values($arr) {
return array_filter($arr, function($v){ return ($v >= 1); });
}
另请注意,这些都不会验证值实际上是数字。