2016-11-17 93 views
-5

是否有执行以下更好/更短的方式:计数阵列&in_array在一个功能

$stock_array = array("soccer" => "0"); 
if (count($stock_array) == 1 && in_array('0', $stock_array)) {...} 

我要检查,如果数组有1个元素,并且该值为0。

在此先感谢

+3

您的需求是? –

+0

'if isset($ stock_array ['soccer'])&& empty($ stock_array ['soccer'])'我猜 – jitendrapurohit

+0

你想完成什么?考虑到你的例子,条件总是评估为“TRUE”,所以你可以完全省略“if”:-) –

回答

1

根据你的标题,这提供了如果计数之一,它的值是0

$count = array_count_values($stock_array); 
if ($count == array('0' => 1)) { 
    //something 
} 

或者你也可以使用array_filter()empty(),如果你正在寻找一个迎宾这样回答的:如果数组中的所有值都为空或0,则这将返回True。

if (empty(array_filter($stock_array))) { 
    //something 
} 
+2

非常感谢jitendrapurohit。 IK为我工作。我相信我的头衔不够清楚。我向所有人道歉。 我也可以使用:if(array_sum($ stock_array)== 0){''} –

+0

这两种解决方案意味着创建一个临时数组。虽然表达式看起来可能看起来很简单,但它们不如'count'和'current',甚至'array_sum'高效。 –

+0

@SaraZ,array('a'=> 0,'b'=> 0)''怎么样? 'array_sum'和答案中的最后一个版本都会返回'true',而count是2.如果你想检查count,你需要_调用'count()'。 –

0

是的,你可以尝试使用下面的代码。

if (array_search('0', array_values($stock_array)) == 0) {...} 

但这并不告诉我们,如果数组只有这个元素。

从你的问题,我能理解你正在尝试做的:

  • 检查数组的长度为1
  • 检查数组中是否存在该值。

我提供的解决方案检查这是否是数组的第一个值。但要检查数组的长度,还需要另一个数组。

+0

谢谢。但我必须检查数组是否有1个元素 –