更改数组顺序(如列)

时间:2013-01-03 13:33:56

标签: php arrays sorting

我想更改订单:

$array = array(
    "a" => "bar",
    "b" => "foo",
    "c" => "bar",
    "d" => "foo",
    "e" => "bar",
    "f" => "foo",
    "g" => "bar",
    "h" => "foo",
    "i" => "bar",
    "j" => "foo"
);

要:

$array = array(
    "a" => "bar",   "f"=> "foo",
    "b" => "foo",   "g"=> "bar",
    "c" => "bar",   "h"=> "foo",
    "d" => "foo",   "i"=> "bar",
    "e" => "bar",   "j"=> "foo"
);

关键是我想用数组中的项填充表格:

不应该像这样对数组进行排序:

<table>
<tr><td>Item 1</td><td>Item 2</td></tr>
<tr><td>Item 3</td><td>Item 4</td></tr>
</table>

但是像这样:

<table>
<tr><td>Item 1</td><td>Item 3</td></tr>
<tr><td>Item 2</td><td>Item 4</td></tr>
</table>

由于

2 个答案:

答案 0 :(得分:1)

无需重新排列原始阵列。使用array_chunk将它分成两对,并在构建html时循环遍历它们。

$array = array(....);
$size = ceil(count($array) / 2);
list($left, $right) = array_chunk($array, $size, true);
echo '<table>';
while (count($left) > 0) {
    echo '<tr>';
    echo '<td>', key($left), ': ', array_shift($left), '</td>';
    echo '<td>', key($right), ': ', array_shift($right), '</td>';
    echo '</tr>';
}
echo '</table>';

答案 1 :(得分:0)

我认为密钥是字符串还是整数并不重要。

$array = array(
    4 => 'd',
    2 => 'b',
    3 => 'c',
    6 => 'f',
    5 => 'e',
    1 => 'a'
);

$x = floor(count( $array ) / 2);
for( $i=1; $i <= $x; $i++ )
{
    $array2[ $i ] = $array[ $i ];
    $array2[ $i + $x ] = $array[ $i + $x ];
}

将输出:

$Array2
(
    [1] => a, [4] => d,
    [2] => b, [5] => e,
    [3] => c, [6] => f
)

JB

相关问题