【问题标题】:Find a value in an array [closed]在数组中查找一个值[关闭]
【发布时间】:2011-09-27 05:36:07
【问题描述】:

下面的代码我做错了什么?我想比较元素$my_id 是否存在于数组$arr 中。如果存在则返回TRUE,否则返回FALSE

for($i=0;$i<$cnt;$i++)
{
    if($arr[$i] == $my_id)
    {
        return TRUE;
    }
    else
    {
        return FALSE;
    }
}

【问题讨论】:

  • 你期望它做什么?你有错误吗?这是 php 吗?
  • 没什么,至少在语法上(如果是 PHP)。为什么你觉得有问题?可能存在逻辑错误,但由于您没有说明 sn-p 应该做什么,因此我们无法帮助您。这是什么语言? PHP?
  • 它的 PHP 。我想比较元素 $my_id 是否存在于数组 $arr 中。如果存在则返回 TRUE 否则返回 FALSE
  • @Nitish,这就是 in_array($my_id, $arr) 函数的用途:php.net/manual/en/function.in-array.php

标签: php for-loop return


【解决方案1】:

您的代码中的错误是在 $arr[$i] != $my_id 上返回 false。该算法应如下所示:

for($i=0;$i<$cnt;$i++)
{
    if($arr[$i] == $my_id)
    {
        return TRUE;
    }
}
return FALSE;

附:这不是 PHP 语言中这个问题的最佳解决方案。你应该使用来自 alex 的一个。

【讨论】:

    【解决方案2】:

    如果你只需要知道,如果一个值在给定的数组中

    in_array($value, $array);
    

    也许您也想获得(第一次出现)该值的索引

    $index = array_search($value, $array);
    if ($index === false) {
      // Not in array
    } else {
      echo $array[$index];
    }
    

    【讨论】:

      【解决方案3】:

      你可以用...替换它

      return in_array($my_id, $arr);
      

      ...假设您真的不想在第一个元素不匹配时返回 FALSE

      如果这确实是您想要的,您可以使用...

      return $arr[0] == $my_id;
      

      如果您想让您的代码基本保持原样,只需将 return FALSE 移到循环体之外。

      【讨论】:

        【解决方案4】:

        好吧,我相信你应该删除 else 语句,除非你总是在数组中只有一个元素。我的意思是 - 从您展示的示例中,您正在退出循环。我怀疑这是你想要的。

        【讨论】:

          【解决方案5】:

          您遇到的问题是您没有完全循环遍历数组。您在数组中的第一项之后返回真/假,而不管 [0] 之后的后续数组条目

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-11-27
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-06-09
            • 2021-02-23
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多