0

順序を次のように変更したい:

$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>

ありがとう

4

2 に答える 2

1

元の配列を再配置する必要はありません。array_chunkを使用して2つのペアに分割し、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>';
于 2013-01-03T13:57:15.527 に答える
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

于 2013-01-03T13:53:37.313 に答える