更改PHP数组键以在两个值之后跳过每两次迭代

时间:2016-03-31 11:02:34

标签: php arrays sorting

可能最好用代码示例解释。

我有一个普通键序的简单数组:

$array = array(
    '0' => 'Value',
    '1' => 'Value',
    '2' => 'Value',
    '3' => 'Value',
    '4' => 'Value',
);

有没有办法改变它,所以键按此顺序排列?

$array = array(
    '0' => 'Value',
    '1' => 'Value',
    '4' => 'Value',
    '5' => 'Value',
    '8' => 'Value',
);

2 个答案:

答案 0 :(得分:3)

$array = array(
    'value',
    'value',
    'value',
    'value',
    'value',
    'value',
    'value',
    'value'
);

$newArray = [];
$mustSkip = 1;
$i = 1;
foreach($array as $key => $value) {
    $newArray[$i] = $value;

    if($mustSkip == 2) {
        $i = $i+3;
        $mustSkip = 1;
    }
    else {
        $i++;
        $mustSkip++;
    }
}
echo "<pre>",print_r($newArray,1),"</pre>";
exit;

结果:

Array
(
    [1] => value
    [2] => value
    [5] => value
    [6] => value
    [9] => value
    [10] => value
    [13] => value
    [14] => value
)

自己测试。

答案 1 :(得分:1)

<pre>
$newArray = array();
$i = 1;
foreach ($array as $key => $value)  {
    $newArray[$i] = $value;
    if ($key % 2 && $key) {
        $i += 3;
    } else {
        $i++;
    }
}
var_dump($newArray);
</pre>