【问题标题】:Get specific element of associative array by position without loop按位置获取关联数组的特定元素,无需循环
【发布时间】:2016-01-20 03:12:23
【问题描述】:

是否有任何函数可以返回,例如,没有任何循环的关联数组的第三个元素? (并且不复制数组)

我知道我可以与计数器一起执行 for/foreach 循环,但我只是好奇。


PS:我已经找到 this example,但我期待 php 提供一些东西,例如 getAssociativeDataByIndex($array, $index)。

编辑:这篇文章的内容:

function getAtPos($tmpArray,$pos) {
 return array_splice($tmpArray,$pos-1,1);
}

$array = array('Alpha' => 1.1,'Bravo' => 2.2,'Charlie' => 3.3,'Delta' => 4.4,'Echo' =>5.5, 'Golf' => 6.6);    
$pos = 3;

$return = getAtPos($array,$pos);    
var_dump($return); // 3.3

PS2:我也找到了this answer,但是 ArrayIterator 类和 seek 方法没有(很好)记录在案,所以我不知道这是否会创建数组的副本(如果有,我不会觉得很有趣)

编辑:这篇文章的内容:

$keys = array_keys($array);
echo $array[$keys[$position]];

OR 

The ArrayIterator class can also do this for you:

$iterator = new ArrayIterator($array);
$iterator->seek($position);

数组示例:

$a = array('jean' => 3, 'simon' => 2, 'alex' => 5, 'derek' => 4);

用例示例: 你有一个外部库,它接受一个数组作为参数,处理它并返回一个数组,如 index=>boolean(或 index=>data)

例如:数组(1=>false, 2=>false, 3=>true)...

【问题讨论】:

    标签: php arrays associative-array


    【解决方案1】:

    array_values() 基本上会将您的关联数组转换为数值数组,同时保持顺序:

    <?php
    $a = array('jean' => 3, 'simon' => 2, 'alex' => 5, 'derek' => 4);
    $values = array_values($a);
    print_r($values);
    ?>
    

    结果:

    Array
    (
        [0] => 3
        [1] => 2
        [2] => 5
        [3] => 4
    )
    

    【讨论】:

    • 谢谢!是的,我从第一个链接中看到了这个选项......但是 array_values 似乎“相对昂贵”
    猜你喜欢
    • 1970-01-01
    • 2013-02-12
    • 2019-12-05
    • 2020-12-04
    • 1970-01-01
    • 1970-01-01
    • 2011-10-23
    • 1970-01-01
    • 2013-03-15
    相关资源
    最近更新 更多