【问题标题】:Count array & in_array in one function在一个函数中计算数组和 in_array
【发布时间】:2016-11-17 12:29:06
【问题描述】:

是否有更好/更短的方法来执行以下操作:

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

我想检查数组是否有1个元素,值为0。

提前致谢

【问题讨论】:

  • 您的需求是什么?
  • if isset($stock_array['soccer']) && empty($stock_array['soccer']) 我猜
  • 你想完成什么?鉴于您的示例,条件将始终评估为TRUE,因此您可以完全省略if :-)
  • @JiriHrazdil 我猜这是一个例子。
  • @PraveenKumar:我知道 - 但是这个例子应该展示 OP 想要什么。而这个例子没有做到这一点。

标签: php arrays


【解决方案1】:

根据您的标题,这提供了计数是否为 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
}

【讨论】:

  • 非常感谢jitendrapurohit。 Ik 为我工作。我相信我的标题不够清楚。我向大家道歉。我也可以使用: if (array_sum($stock_array)==0) {''}
  • 两种解决方案都意味着创建一个临时数组。虽然这些表达式写起来可能看起来很简单,但它们的效率不如countcurrent,甚至不如array_sum
  • @SaraZ,array ('a' => 0, 'b' => 0) 怎么样? array_sum 和答案中的最后一个版本都将返回 true,而计数为 2。如果要检查计数,您必须调用 count()。跨度>
  • 没问题。我想要的只是检查计数是否不为 0。如果为零,则什么也不显示。对于我的问题不清楚,我深表歉意。
【解决方案2】:

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

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

但这并不能说明数组是否只有这个元素。

根据您的问题,我可以理解您正在尝试做的事情:

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

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

【讨论】:

  • 谢谢。但我必须检查数组是否有 1 个元素
猜你喜欢
  • 1970-01-01
  • 2017-12-27
  • 1970-01-01
  • 2011-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多