2

次の多次元配列があります。

$userList = array(
    0 => array('id' => 1000, 'first_name' => 'John', 'last_name' => 'Smith'),
    1 => array('id' => 1001, 'first_name' => 'Sam', 'last_name' => 'Johnson'),
);

次のような配列に変換したい:

$userData = array(
    1000 => 'John Smith',
    1001 => 'Sam Johnson',
);

foreach ループを使用してこれを実装する方法は明らかですが、array_map や array_walk などの PHP 配列関数でこれを実行できるかどうか疑問に思います。コールバック関数には PHP 5.3 を使用してください。ありがとうございました!

4

3 に答える 3

4

これらの関数は配列値に対してのみ機能するため、新しい配列にキーを設定するための関数を取得するのはやや厄介です。それを行う1つの方法は次のとおりです。

$arr = array_combine(
    array_map(function ($i) { return $i['id']; }, $arr),
    array_map(function ($i) { return "$i[first_name] $i[last_name]"; }, $arr)
);

これは、aforeachがはるかに適切な場合です。

于 2012-07-18T07:20:15.883 に答える