開発では、 ['name' => 'tom'、 'age' => 28]などの連想配列がしばしば処理されます。値だけを気にし、それらを均一に文字列に変換したい場合:
$data = ['name' => 'Tom', 'age' => 28];
$formatted = array_map('strval', array_values($data));
print_r($formatted);
出力:
Array
(
[0] => Tom
[1] => 28
)
このシナリオでは、 array_values()がAssociationキーを削除し、 array_map()はタイプ変換を完了します。
追加のスペースとさまざまなデータ形式を含むユーザー入力から次の配列を取得すると想像してください。
$input = [
'first' => ' Alice ',
'second' => 'BOB',
'third' => ' charlie '
];
小文字を統合し、スペースを削除し、インデックスアレイを再構築します。
$clean = array_map('trim', array_map('strtolower', array_values($input)));
print_r($clean);
出力:
Array
(
[0] => alice
[1] => bob
[2] => charlie
)
2つのarray_map()sのネストは、各値を処理するために使用され、最後にarray_values()でインデックスを再編成すると、結果は簡潔で明確です。
オブジェクト配列または連想配列リストでは、次のシナリオでユーザーのIDを抽出するなど、特定のフィールドを抽出する必要があることがよくあります。
$users = [
['id' => 101, 'name' => 'Lily'],
['id' => 102, 'name' => 'John'],
['id' => 103, 'name' => 'Mike']
];
$ids = array_values(array_map(function ($user) {
return $user['id'];
}, $users));
print_r($ids);
出力:
Array
(
[0] => 101
[1] => 102
[2] => 103
)
この構造化されたデータでは、 array_map()はキー値を抽出し、 array_values()は出力配列の連続性を保証します。これは、後続のデータ処理またはフロントエンドJSON出力に非常に適しています。
場合によっては、ユーザー名に基づいてプロファイルページパスを生成するなど、特定のデータフィールドに基づいてパラメーターを使用してURLを生成する必要があります。
$names = ['alice', 'bob', 'charlie'];
$urls = array_map(function ($name) {
return 'https://gitbox.net/user/profile/' . urlencode($name);
}, array_values($names));
print_r($urls);
出力:
Array
(
[0] => https://gitbox.net/user/profile/alice
[1] => https://gitbox.net/user/profile/bob
[2] => https://gitbox.net/user/profile/charlie
)
array_map()は、パス文字列を生成するために使用され、 array_values()は、データが必要に応じて連続インデックスアレイであり、JSON応答に適しているか、フロントエンドへのパスに適しています。
関連タグ:
array_values array_map