【问题标题】:Returning array key when using array[] =使用 array[] = 时返回数组键
【发布时间】:2014-04-13 02:31:15
【问题描述】:

使用array[]添加新值时返回数组键的简单方法是什么。

例如:

$array[] = 'Hello World';
return $Key_of_Hello_World;

我想到的方法包括:

$key = count($array)-1;

有不同的解决方案吗?

结论

end()key() 的组合通常是最好的,因为它允许关联,但如果您的数组仅使用数字键,count()-1 似乎是最简单且同样快速的。我将此添加到另一个链接的问题中。

【问题讨论】:

标签: php arrays


【解决方案1】:

你也可以这样做..

<?php

function printCurrKey(&$array)
{
    return array_keys($array)[count($array)-1];
}

$array[] = 'Hello World';
echo printCurrKey($array);// "prints" 0
$array[] = 'This is a new dimension !';
echo printCurrKey($array);// "prints" 1
$array['newkey'] = 'Hello World is has a new key !';
echo printCurrKey($array);// "prints" newkey

【讨论】:

  • 是的,使用 [] 似乎 count-1 可能是最好的方法。只需要一根线,速度极快。对于较大的数组,array_search 可能会慢一些,但这是一种有趣的方法。 +1
【解决方案2】:

您可以使用array_keys() 作为数组的返回键

return array_keys($array)

个别键尝试使用

return array_keys($array, 'Hello World!');

【讨论】:

    【解决方案3】:

    你想使用array_keys:http://us1.php.net/manual/es/function.array-keys.php

    $array[] = 'Hello World';
    return array_keys($array, 'Hello World!');
    

    【讨论】:

    • 过了一会儿又回来了。如果您正在遍历数组,那么这是使用 end/key 的一个很好的替代方法(因为您不想重置指针)。使用 $keys = array_keys($array); $key = end($keys); 之类的东西来避免严格标准警告。
    【解决方案4】:
    $array[] = 'Hello World';
    end($array); // set internal pointer to end of array
    $key = key($array); // get key of element where internal pointer is pointing at
    return $key;
    

    【讨论】:

    • 这似乎是最快的解决方案,尽管需要两行代码。另一个线程中建议的另一个解决方案是$key = end(array_keys($array));,它有点慢,但只需要一行。我仍然在思考 count-1 是否会足够好,因为它看起来和这种方法一样快,但显然不能像这样使用关联。
    猜你喜欢
    • 1970-01-01
    • 2018-08-16
    • 2016-09-24
    • 1970-01-01
    • 2020-01-15
    • 2019-10-30
    • 2013-06-04
    • 1970-01-01
    • 2014-07-06
    相关资源
    最近更新 更多