当前位置: 首页 > 知识库问答 >
问题:

在没有循环的数组中获取N位置的元素

安承教
2023-03-14

如何获得元素keyvalue在特定位置的n位置数组的keyvalue而不需要循环。

想象一下

$postion = 3; // get array at 3rd position
$array = array(
        "A" => "Four",
        "B" => "twp",
        "C" => "three",
        "D" => "Four",
        "E" => "Five",
        "F" => "Four");


$keys = array_keys($array);
$value = array_values($array);

echo implode(array_slice($keys, $postion, 1)), PHP_EOL; // Key at 3rd posstion
echo implode(array_slice($value, $postion, 1)), PHP_EOL; // Value at n position

输出

D
Four

该方法的问题是

  • 数组的多次重复导致更高的内存使用率
    null
    null

为什么不使用splfixedarray

>

  • 这本来是一个解决方案,但我之所以会这样做,是因为我没有使用正键(我真的这样做在php部分是不公平的)

    Fatal error: Uncaught exception 'InvalidArgumentException' 
    with message 'array must contain only positive integer keys' 
    

    你说的大数据集是什么意思:

      null
  • 共有1个答案

    闾丘玮
    2023-03-14

    假设PHP 5.4,使用数组取消引用:

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

    在早期版本中,您需要将其分成两行:

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

    如果您必须访问多个元素,那么在5.4+中使用双行方法也是值得的,这样您就可以只调用相对昂贵的array_keys()函数一次。此外,取消引用方法假设数组中的特定位置存在,但它可能不存在。将其分解为多个操作将允许您处理该错误情况。

    echo array_values($array)[$position];
    // or
    $values = array_values($array);
    echo $values[$position];
    
    $iterator = new ArrayIterator($array);
    $iterator->seek($position);
    
    echo $iterator->key(), " = ", $iterator->current(); // D = Four
    

    这可能是代价最小的方法,假设在您执行此操作时没有在内存中创建数组的副本(仍在研究此元素),并且可能是对任意键进行多次访问的最佳方法。

     类似资料:
    • 问题内容: 在n = 5和k = 3的情况下,以下循环将执行此操作 但是效率不高,我想使用Banker的序列来完成,因此先探索单例,然后研究配对,然后研究三元组再停止。 我没有找到一种方法,但是至少此循环应该更有效: 还有:但是k个嵌入式循环看起来很丑 问题答案: 即使k个嵌入式循环看起来很丑,这也应该是最有效的方法

    • 问题内容: 做到这一点的最佳方法是什么? 问题答案: 使用 array_slice() 这是PHP手册中的一个示例:array_slice 只有一个小问题 如果数组索引对您有意义,请记住这将重置并重新排列 数字 数组索引。您需要设置标志来避免这种情况。(第4个参数,自5.0.2起可用)。 例: 输出:

    • 返回数组的第n个元素。 使用 Array.slice() 获取数组的第 n 个元素。如果索引超出范围,则返回 [] 。省略第二个参数 n ,将得到数组的第一个元素。 const nthElement = (arr, n = 0) => (n > 0 ? arr.slice(n, n + 1) : arr.slice(n))[0]; nthElement(['a', 'b', 'c'], 1);

    • 本文向大家介绍获取元素在Java ArrayList中的位置,包括了获取元素在Java ArrayList中的位置的使用技巧和注意事项,需要的朋友参考一下 可以使用方法java.util.ArrayList.indexOf()获得ArrayList中元素的位置。此方法返回指定元素首次出现的索引。如果该元素在ArrayList中不可用,则此方法返回-1。 演示此的程序如下所示- 示例 输出结果 现在

    • 我有以下JavaScript代码*** var pos=文档。getElementById('pos')<位置样式。位置='相对'<位置样式。宽度='100%'<位置样式。高度='100%'<位置样式。背景='灰色' 对于(i=1;i HTML代码:*** 第一个元素的位置正确,顶部为0px,左侧为30px,但是第二个和第三个元素的位置不正确,我尝试使用显示作为内联元素,但仅将它们设置在同一行上,

    • 问题内容: 在遍历列表的Python循环中,我们可以编写: 并巧妙地遍历列表中的所有元素。有没有办法知道循环中到目前为止我循环了多少次?例如,我要列出一个清单,在处理完10个元素之后,我想对它们进行处理。 我考虑过的替代方案可能是: 要么: 是否有更好的方法(就像)来获得到目前为止的迭代次数? 问题答案: pythonic的方法是使用: