【问题标题】:Referencing for element in a PHP array引用 PHP 数组中的元素
【发布时间】:2009-05-04 13:48:56
【问题描述】:

答案不是$array[0];

我的数组设置如下

$array = array();
$array[7] =  37;
$array[19] = 98;
$array[42] = 22;
$array[68] = 14;

我正在对数组进行排序,并尝试在排序后获得尽可能高的匹配。所以在这种情况下 $array[19] = 98; 我只需要返回值 98,它将始终位于数组的第一个位置。我无法使用 $array[0] 引用,因为 0 键不存在。速度限制意味着我无法循环遍历数组以找到最高匹配。

还必须有比

更好的解决方案
foreach ( $array as $value )
{
    echo $value;
    break;
}

【问题讨论】:

    标签: php arrays


    【解决方案1】:
    $keys = array_keys($array);
    echo $array[$keys[0]];
    

    或者你可以使用current()函数:

    reset($array);
    $value = current($array);
    

    【讨论】:

    • 您可能需要在 current() 之前调用数组的 reset() 以确保您位于第一个元素。
    • 谢谢。电流完美。还有其他限制阻止我复制数组甚至索引。在这种情况下,速度也是一个重要因素。
    【解决方案2】:

    如果我正确理解您的问题,您需要数组中的第一个键:

    $firstValue = reset($array);
    $firstKey = key($array);
    

    【讨论】:

      【解决方案3】:

      你总是可以的;

      $array = array_values($array);
      

      现在 $array[0] 将是正确答案。

      【讨论】:

        【解决方案4】:

        如果你想要第一个元素,你可以使用array_shift,这不会循环任何东西,只返回值。

        但是,在您的示例中,它不是第一个元素,因此您的示例/问题似乎存在差异,或者我对此的理解有误。

        【讨论】:

        • array_shift() 优于 current(),因为它不依赖于内部数组指针。如果你使用 next($arr) 然后 current($arr) 它将返回一个不同的值。尽管情况并非如此,但 always 返回第一个元素的方式不如 array_shift() 优雅。
        • Array_shift 将缩短数组。在这种情况下,我只需要在系统的另一部分进一步处理数组之前处理该值。
        【解决方案5】:

        如果您要对其进行排序,您可以指定自己的排序例程,并在您对其进行排序的同时让它选出最高值。

        【讨论】:

        • 实际的排序是通过系统的另一部分进行的。实际上是一个我无法控制的黑匣子。
        【解决方案6】:
        $array = array_values($array);
        echo $array[0];
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-01-22
          • 2014-05-23
          • 2012-05-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-15
          相关资源
          最近更新 更多