【问题标题】:How to know the last index of an disorder array [duplicate]如何知道无序数组的最后一个索引[重复]
【发布时间】:2020-06-14 06:48:44
【问题描述】:

我有一个这样的数组:

Array ( [2] => -100 [0] => -7.1 )

它没有排序,因为如果我对这个数组进行排序,它将成为这个数组到这个数组中([0] => -7.1 [1] => -100),我不是在寻找那个,我只是想知道这样的数组的索引值....

在这种情况下,如果我使用 php 函数知道最后一个索引,它显示为 0,但尽管它位于最后一个位置,但最后一个索引实际上是 2,我怎样才能得到 2 而不是 0?

我没有使用 PHP 7,我使用的是 PHP 5

谢谢

【问题讨论】:

标签: php


【解决方案1】:

由于您建议的数组结构没有规律,请使用max(array_keys($arr))

【讨论】:

    【解决方案2】:

    有函数array_key_last()。它返回数组的最后一个键。这是一个示例(PHP 7+):

    // array_key_last()  ( array $array ) : mixed
    
    $arr = [
        '2' => 3,
        '5' => 2,
        '0' => 10
    ];
    
    print_r(array_key_last($arr));
    
    

    更新

    在 PHP 7 中没有 array_key_last() 函数,所以在 PHP 5 中我们可以使用 end()key()。 函数end() 将数组的指针设置为最后一个元素并返回它。函数key() 返回数组当前元素的键。示例:

    $arr = [
        '2' => 3,
        '5' => 2,
        '0' => 10
    ];
    
    end($arr);
    print_r(key($arr));
    

    【讨论】:

    • 我没有使用 PHP 7,所以它对我不起作用
    • @JesúsCova PHP 5 更新
    • 赞成您的回答。
    • 不行,因为 end() 会将索引 0 显示为最后一个,而且不正确我已经尝试过了
    【解决方案3】:

    由于你用的不是PHP7,所以可以用count减1

    $a = array(5, 3, 4);
    print_r($a[count($a) - 1]);
    

    【讨论】:

    • 这对于 OP 的示例是不正确的。他的最大索引是 2,即使数组只包含两个元素。这意味着存在未定义索引错误的风险。
    • 那些细节在他第一次发布时并不存在。
    • @El_Vanja 我知道它是一个未定义的索引,因此我说这样的数组
    • 是的,我明白了,我只是在解释为什么这个解决方案不起作用。
    猜你喜欢
    • 2012-11-25
    • 2022-11-18
    • 2021-05-15
    • 1970-01-01
    • 2016-06-10
    • 1970-01-01
    • 1970-01-01
    • 2016-02-16
    • 2019-04-15
    相关资源
    最近更新 更多