如何在php中检查数组是否包含正值

时间:2014-04-30 11:31:59

标签: php arrays

我通过互联网搜索没有运气。我有整数数组,我想检查我的数组是否包含正值。

我的数组

$Myarray = {1,3,7,-6,-9,-23,-8};

我试图使用in_array() function但没有运气;

有什么帮助吗?

3 个答案:

答案 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); });
}

另请注意,这些都不会验证值实际上是数字。