ホームページ >バックエンド開発 >PHPの問題 >PHP同じ配列でキー値を置き換える

PHP同じ配列でキー値を置き換える

WBOY
WBOYオリジナル
2023-05-19 10:36:38552ブラウズ

開発では配列を操作する必要がよくありますが、一般的な要件の 1 つは、キー名を「user_id」から「id」に置き換えるなど、配列内のキー名を置き換えることです。 PHPでは、配列のarray_combineやarray_valuesなどの関数を使用して置換できますが、これらの関数にはいくつかの制限があるため、キー値を同じ配列に置換するには別の方法を使用する必要があります。

1. array_map 関数を使用する

PHP の array_map 関数を使用すると、配列内の各キーまたは値にコールバック関数を適用できます。この関数を使用すると、配列の各要素にコールバック関数を適用してキー名を置き換えることができます。

サンプル コード:

$arr = ['user_id' => 1, 'user_name' => 'Tom', 'user_age' => 20];

$new_arr = array_map(function($key) {
  if($key == 'user_id') {
    return 'id';
  }
  return $key;
}, array_keys($arr));

$arr = array_combine($new_arr, array_values($arr));

上記のコードでは、array_map 関数を使用して、配列内の各キー名にコールバック関数を適用します。キー名が "user_id" の場合は、置換します。それ以外の場合は、元のキー名を返します。次に、array_combine 関数を使用して、新しいキー名と元の値を新しい配列に再結合します。

2. foreach ループを使用する

同じ配列内のキー名を置換するもう 1 つの方法は、PHP の foreach ループを使用して配列を走査することです。元の配列の各要素を新しい配列にコピーできますが、コピー時に元の配列のキー名を変更します。

サンプル コード:

$arr = ['user_id' => 1, 'user_name' => 'Tom', 'user_age' => 20];

$new_arr = [];

foreach($arr as $key => $value) {
  if($key == 'user_id') {
    $key = 'id';
  }
  $new_arr[$key] = $value;
}

$arr = $new_arr;

上記のコードでは、新しい配列 $new_arr を使用して、元の配列の各要素を新しい配列にコピーします。コピー時に元の配列のキー名が「user_id」の場合は「id」に置き換えます。

3. array_reduce 関数を使用する

array_reduce 関数を使用すると、配列内のすべての要素に対してリダクション計算を実行でき、また、配列内のキー名を置換するためにも使用できます。

サンプル コード:

$arr = ['user_id' => 1, 'user_name' => 'Tom', 'user_age' => 20];

$new_arr = array_reduce(array_keys($arr), function($result, $key) use ($arr) {
  if($key == 'user_id') {
    $key = 'id';
  }
  $result[$key] = $arr[$key];
  return $result;
}, []);

$arr = $new_arr;

上記のコードでは、配列のキー名を array_reduce 関数に渡し、キー名を置き換える無名関数を定義します。この関数では、まずキー名が「user_id」であるかどうかを判断し、そうである場合は「id」に置き換えます。それ以外の場合は、元のキー名を使用します。次に、新しいキーと値のペアを戻り値の配列に追加し、最後に返された配列を使用して元の配列を置き換えます。

概要

PHP では、array_map、foreach、array_reduce などの関数を使用するなど、同じ配列内のキー名を置換するさまざまな方法があります。さまざまな機能がさまざまな方法で使用されるため、特定のニーズやシナリオに応じて選択する必要があります。実際の開発では、配列の演算効率やコードの可読性を向上させるために、これらのメソッドを柔軟に使用する必要があります。

以上がPHP同じ配列でキー値を置き換えるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。