0

逆とは、次のことを意味します。

$my_array = array(
    "header" => array(
        0 => "Header 1",
        1 => "Header 2"
    ),
    "paragraph" => array(
        0 => "Paragraph 1",
        1 => "Paragraph 2"
    )
);

これに:

$my_new_array = array(
    0 => array(
        "header" => "Header 1",
        "paragraph" => "Paragraph 1"
    ),
    1 => array(
        "header" => "Header 2",
        "paragraph" => "Paragraph 2"
    )
);

私はこれを行うことができることを知っています:

$my_new_array = array();
foreach ( $my_array["header"] as $key => $header ){
    if ( !is_array( $my_new_array[ $key ] ) ){
        $my_new_array[ $key ] = array();
    }
    $my_new_array[ $key ]["header"] = $header;
}
foreach ( $my_array["paragraph"] as $key => $paragraph ){
    $my_new_array[ $key ]["paragraph"] = $paragraph;
}

しかし、これを行うための簡単な PHP 関数や、より最適な方法があるかどうか疑問に思っていました。PHP関数ディレクトリにそのような関数が見つかりませんでした.これ以上最適な方法は思いつきません!

乾杯

4

3 に答える 3

3

これは、具体的なキーを使用しなくても機能します。

$new = array();
foreach ($my_array as $key => $values) {
  foreach ($values as $idx => $value) {
    $new[$idx][$key] = $value;
  }
}
于 2012-05-15T10:32:03.000 に答える
1

残念ながら、これを行うための組み込み関数はありませんが、既存の回答が好意的であるように思われるため、この候補者を議題foreachに最大限に盛り込んでレースに参加させます。array_walk

$result = array();
array_walk($array, function($rows, $propKey) use (&$result) {
    array_walk($rows, function($val, $row) use($propKey, &$result) { 
        $result[$row][$propKey] = $val;
    });
});

実際に見てください

于 2012-05-15T10:36:54.510 に答える
1
$my_new_array = array();
array_walk($my_array, function($innerArray, $key) use (&$my_new_array) {
  foreach ($innerArray as $index => $val) {
    $my_new_array[$index][$key] = $val;
  }
});

...基本的には同じことを別の方法で書いていますが、私が思いつくことができる最高のものです。キー名が明示的に指定されていないため、より動的であるという利点があります。

動いているのを見る

于 2012-05-15T10:32:42.347 に答える