0

2D配列を「90°」だけ「ねじり」たい。

説明させてください。

私はこのような配列を持っています:

array(
    array( adam , brad , chris , david ),
    array( 21   , 23   , 22    , 26    )
)

そして私はそれを次のようなものに変換したいと思います:

array(
    array( adam  , 21 ),
    array( brad  , 23 ),
    array( chris , 22 ),
    array( david , 26 )
)

どうやってやるの ?

4

3 に答える 3

2

私はそこにforeachを投げますが:

$array = array(
    array('adam', 'brad', 'chris', 'david'),
    array(21, 23, 22, 26)
);

$final_array = array();
foreach ($array[0] as $k => $v)
{
    $final_array[] = array($array[0][$k], $array[1][$k]);
}

print_r($final_array);

これに対するコメントで多少の混乱が生じた後、コードを次のように縮小できることが指摘されました。

foreach ($array[0] as $k => $v)
{
    $final_array[] = array($v, $array[1][$k]);
}

ありがとうスタン

于 2012-11-28T12:06:38.323 に答える
1

このようなものが機能するはずです:

// Your array stored as $arr

$newArr = array();
for ($i = 0;$i < count($arr[0]); $i++) {
    $newArr[] = array($arr[0][$i],$arr[1][$i]);
}

編集:あなたはソートにタグを付けますが、配列はすでにソートされています、あなたもソートしたいですか?

于 2012-11-28T12:04:48.847 に答える
1

これが連想配列(2D配列の一種)の1つです。

// Take array like ([0] => ('key1' => 'value1', 'key2' => 'value2'), [1] => ('key1' => 'value45', 'key2' => 'value3'))
// and transform it to like ('key1' => ([0] => 'value1', [1] => 'value45'), 'key2' => ([0] => 'value2', [1] => 'value3'))
function array_twist(array $array) {
    $number_of_rows = count($array);
    $twisted_array = array();
    for ($i = 0; $i < $number_of_rows; ++$i) {
        $fields = array_keys($array[$i]);
        foreach ($fields as $field) {
            $data = $array[$i][$field];
            if ($data != '') {
                $twisted_array[$field][] = $data;
            }
         }
     }
   return $twisted_array;
}
于 2016-07-25T20:37:09.360 に答える