0

私は次のデータの配列を持っています:

$data = array(
 0 => array(
   'firstname' => 'John',
   'lastname' => 'Doe'
 ),
 1 => array(
   'firstname' => 'Foo',
   'lastname' => 'Bar'
 )
)

そして、私はそれを操作してこの配列になりたいと思います:

$finalData = array(
 'firstname' => array('John','Foo'),
 'lastname' => array('Doe','Bar')
)

PHPを使用してこれを達成するにはどうすればよいですか?このシナリオで使用できる場合は、PHP配列メソッドについて学びたいと思います。

ありがとう!

4

4 に答える 4

0

array_mapこれは、足を撃たないなどの機能に特化しすぎています。foreachただし、ループを使用すると簡単に実行できます。

$finalData = array();
foreach ($data as $person) {
    $finalData['firstname'][] = $person['firstname'];
    $finalData['lastname'][] = $person['lastname'];
}
于 2013-01-25T00:34:24.900 に答える
0

$data をループして、姓と名を別々に収集する必要があります。残念ながら、「配列の抜き取り」を実行する標準の php 関数はありません。

于 2013-01-25T00:34:49.937 に答える
0

まあ、そのようなものは存在しないと思いますが、配列関数のドキュメントを読むべきだと思います

何も見つからない場合は、独自のものを作成し (おそらく array_map を使用して)、独自の質問に答えてください。

于 2013-01-25T00:35:09.677 に答える
0

これにより、必要なものが得られます。

$new_data = array();
foreach ($data as $d) {
    $keys = array_keys($d);
    foreach ($keys as $k) {
        $new_data[$k][] = $d[$k];
    }
}
print_r($new_data);

結果;

配列
(
    [ファーストネーム] => 配列
        (
            [0] => ジョン
            [1] => ふー
        )

    [姓] => 配列
        (
            [0] => ドウ
            [1] => バー
        )

)
于 2013-01-25T00:42:49.903 に答える