ここにいる方は、array_map 関数がコールバック内の配列キーへのアクセスを許可していないことをおそらくすでにご存じでしょう。値以外のキーを持つことは、連想配列 (文字列キーを持つ配列) を扱う場合に非常に便利です。
このソリューションの使用例と実装した新しい関数を紹介します。
さらに技術的な記事については、Linkedin または X で私をフォローしてください。
PHP の array_map 関数の一般的な実際の使用例は、データベース クエリまたは API 応答からのデータの変換です。たとえば、ユーザー データの配列があり、ユーザーの名前を書式設定するか、各ユーザー レコードから特定の情報を抽出するとします。
ユーザー レコードの配列があり、各レコードが first_name、last_name、email などのキーを含む連想配列であると想像してください。
// Array of user data (e.g., from a database query) $users = [ [ 'first_name' => 'John', 'last_name' => 'Doe', 'email' => 'john.doe@example.com' ], [ 'first_name' => 'Jane', 'last_name' => 'Smith', 'email' => 'jane.smith@example.com' ], [ 'first_name' => 'Bob', 'last_name' => 'Johnson', 'email' => 'bob.johnson@example.com' ] ];
電子メール アドレスのリストを簡単に抽出して通知を送信できます。
$emails = array_map(function($user) { return $user['email']; }, $users); // Result: ['john.doe@example.com', 'jane.smith@example.com', 'bob.johnson@example.com']
array_map 関数を使用すると、ユーザー オブジェクトの情報に基づいて新しいフィールドを追加できます。
// Using array_map to add the avatar field to each user $result = array_map(function($user) { return array_merge( $user, [ 'avatar' => 'https://eu.ui-avatars.com/api/?background=ff7511&color=fff&name='.$user['first_name'] ] ); }, $users); // Output the result var_dump($result);
製品ダッシュボードにグラフを作成するために、NoSQL データベースからデータを抽出しました。 NoSQL データベースから受け取るデータは次のようになります:
$data = [ "2024-08-25" => ["doc_count" => 523, "score" => 0.2, "skipped" => 0], "2024-08-24" => ["doc_count" => 423, "score" => 0.2, "skipped" => 0], "2024-08-23" => ["doc_count" => 453, "score" => 0.2, "skipped" => 0], "2024-08-22" => ["doc_count" => 267, "score" => 0.2, "skipped" => 0], "2024-08-21" => ["doc_count" => 378, "score" => 0.2, "skipped" => 0], "2024-08-20" => ["doc_count" => 325, "score" => 0.2, "skipped" => 0], "2024-08-19" => ["doc_count" => 501, "score" => 0.2, "skipped" => 0], ];
グラフの視覚化に JavaScript ライブラリが使用されているため、フロントエンド開発者が作業を容易にするために、このデータを以下の形式に変換する必要があります。
$result = [ [ "label" => "2024-08-25", "value" => 523 ], [ "label" => "2024-08-24", "value" => 423 ], ... ];
しかし、この変換を実行するには、元の配列のキーにアクセスして、それを「ラベル」フィールドに入れる必要があります。ただし、デフォルトの array_map 関数では値へのアクセスのみが許可されます。
これは、連想配列を操作する array_map_assoc 関数の実装です。キーと値の両方をコールバックの引数として提供します:
/** * Apply a mapping callback receiving key and value as arguments. * The standard array_map doesn't pass the key to the callback. But in the case of associative arrays, * it could be really helpful. * * array_map_assoc(function ($key, $value) { * ... * }, $items) * * @param callable $callback * @param array $array * @return array */ function array_map_assoc(callable $callback, array $array): array { return array_map(function($key) use ($callback, $array){ return $callback($key, $array[$key]); }, array_keys($array)); }
これで、元のユーザー配列を JavaScript チャート ライブラリのデータ形式に変換できます。
$histogram = array_map_assoc(function ($key, $value) { return [ 'label' => $key, 'value' => $value['doc_count'] ]; }, $data);
array_map_assoc 関数は文字列キーの状態を保持せず、完全に新しい標準配列を生成するため注意してください。
また、この関数を新しいヘルパー関数として Laravel アプリケーションのグローバル名前空間に追加しました。
https://inspector.dev/laravel-custom-helper-functions-fast-tips/
経験豊富な開発者は、foreach ステートメントを使用するだけでキーと値にアクセスできると考えているかもしれません。
foreach ($data as $date => $value) { ... }
foreach を使用すると、結果の変換を保存するために追加の変数を使用する必要があり、コードを「1 行」のステートメントで構成することはできません。
// Array of user data (e.g., from a database query) $users = [ [ 'first_name' => 'John', 'last_name' => 'Doe', 'email' => 'john.doe@example.com' ], [ 'first_name' => 'Jane', 'last_name' => 'Smith', 'email' => 'jane.smith@example.com' ], [ 'first_name' => 'Bob', 'last_name' => 'Johnson', 'email' => 'bob.johnson@example.com' ] ];
さらに技術的な記事については、Linkedin または X で私をフォローしてください。
Inspector は、ソフトウェア開発者向けに特別に設計されたコード実行監視ツールです。サーバーレベルで何もインストールする必要はありません。Laravel または Symfony パッケージをインストールするだけで準備完了です。
HTTP モニタリング、データベース クエリに関する洞察、アラートや通知を好みのメッセージング環境に転送する機能をお探しの場合は、Inspector を無料でお試しください。アカウントを登録してください。
または、Web サイトで詳細をご覧ください: https://inspector.dev
以上が連想配列の PHP array_map – 簡単なヒントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。