如何将下一个数组值放入当前键数组中

时间:2015-10-22 12:12:08

标签: php arrays

使用当前索引中的下一个索引值创建数组(使用无序索引)的最佳方法是什么。我试图使用next()但没有帮助。我的意思是:

Array
(
    [0] => a
    [8] => b
    [2] => c
    [7] => d
    [9] => e
    [11] => f
)

所以,我希望这个数据像下面的数组

Array
(
    [0] => Array
    (
        [current] => a
        [next] => b
    )
    [8] => Array
    (
        [current] => b
        [next] => c
    )
    [2] => Array
    (
        [current] => c
        [next] => d
    )
    [7] => Array
    (
        [current] => d
        [next] => e
    )
    [9] => Array
    (
        [current] => e
        [next] => f
    )
    [11] => Array
    (
        [current] => f
        [next] => 
    )
)

这可能是最快的方法。

2 个答案:

答案 0 :(得分:2)

注意: 此解决方案实际上正常工作,经过验证。由于一些不明原因,它被推翻了。

我能想到的最简单的解决方案就是你在自己的问题上提出的解决方案,略有改进( Working Demo

<?php
// simulate the array
$arr = [0=>'a',8=>'b',2=>'c',7=>'d',9=>'e',11=>'f'];

// iterate it without messing with its internal pointer
for($i=0;$i<count($arr);$i++)
    $arr[key($arr)] = ["current" => current($arr), "next" => next($arr)];

// test it
echo '<pre>';
print_r($arr);

<强>输出

Array
(
    [0] => Array
        (
            [current] => a
            [next] => b
        )

    [8] => Array
        (
            [current] => b
            [next] => c
        )

    [2] => Array
        (
            [current] => c
            [next] => d
        )

    [7] => Array
        (
            [current] => d
            [next] => e
        )

    [9] => Array
        (
            [current] => e
            [next] => f
        )

    [11] => Array
        (
            [current] => f
            [next] => 
        )

)

此问题的目标是current()next()key()函数的确切用途,因此您只需使用它们。

答案 1 :(得分:0)

<强>更新

用于无序数组

$newarray = array();
$length = count($oldarray);
for($i = 0; $i < $length ; ++$i)
{
   $newarray[] = array('current'=>current($oldarray),'next'=>next($oldarray));
}