PHP では、配列の処理は最も一般的な要件の 1 つです。場合によっては、1 次元配列を 2 次元配列に変換する必要があることがありますが、このプロセスにはさまざまなデータ操作が含まれるため、変換を実現するには配列関数を柔軟に使用する必要があります。この記事では、PHP で 1 次元配列を 2 次元配列に変換する方法とテクニックをいくつか紹介します。
1. 1 次元配列を 2 次元配列に変換する必要性
PHP では、1 次元配列と 2 次元配列は一般的なデータ構造です。 1 次元配列は 1 次元のみの配列であり、通常、生徒のテストのスコアなどの一連の関連データを格納するために使用されます。 2 次元配列には 2 次元の配列が含まれており、通常は、クラス内の全生徒のテストのスコアなど、複数の関連データ セットを格納するために使用されます。 PHP では、通常、配列関数を使用して 1 次元配列を作成し、第 2 レベルの配列関数を使用して 2 次元配列を作成します。 1 次元配列と 2 次元配列を作成する簡単な例を次に示します。
$array1 = array("语文"=>85, "数学"=>90, "英语"=>88); $array2 = array( array("姓名"=>"张三","语文"=>85,"数学"=>90,"英语"=>88), array("姓名"=>"李四","语文"=>89,"数学"=>92,"英语"=>86), array("姓名"=>"王五","语文"=>90,"数学"=>87,"英语"=>91), array("姓名"=>"赵六","语文"=>88,"数学"=>91,"英语"=>89) );
1 次元配列を 2 次元配列に変換する必要がある状況に遭遇することがあります。たとえば、学生のテストのスコアのグループがあるとします。このスコアのグループを特定のルールに従ってグループ化し、その後の処理や表示を容易にするためにそれらを 2 次元配列に変換する必要があります。これは 1 次元配列を 2 次元配列に変換する必要があるため、以下にいくつかの実装方法を紹介します。
2. array_chunk 関数を使用する
array_chunk 関数は、PHP の組み込み関数の 1 つであり、その機能は、1 次元配列を指定された長さの複数の小さな配列に分割することです。これらの小さな配列を結合して、新しい 2 次元配列が返されます。たとえば、次の 1 次元配列があります:
$students_scores = array(85, 90, 88, 89, 92, 86, 90, 87, 91, 88, 91, 89);
この配列を 4 つのグループにグループ化し、新しい 2 次元配列に変換する必要があります。次のメソッドを使用できます:
$grouped_scores = array_chunk($students_scores, 4);
このメソッドは長さ 3 の 2 次元配列を返します。各小さな配列には 4 つの要素が含まれます。元の配列の長さが小さい配列の長さの整数倍ではない場合、最後の小さい配列には残りの要素が含まれます。 var_dump 関数を使用して結果を表示できます:
var_dump($grouped_scores);
実行結果は次のとおりです:
array (size=3) 0 => array (size=4) 0 => int 85 1 => int 90 2 => int 88 3 => int 89 1 => array (size=4) 0 => int 92 1 => int 86 2 => int 90 3 => int 87 2 => array (size=4) 0 => int 91 1 => int 88 2 => int 91 3 => int 89
ご覧のとおり、元の配列は長さ 4 の 3 つの小さな配列に分割されています。そして、これらの小さな配列によって新しい 2 次元配列が形成されます。
3. array_map 関数を使用する
array_map 関数は、PHP の組み込み関数の 1 つであり、その機能は、指定されたコールバック関数を 1 つ以上の配列の各要素に適用することです。 array_map 関数を使用すると、1 次元配列を 2 次元配列に変換できます。具体的な方法は次のとおりです。
function group_by($n, $array) { return array_chunk($array, $n); } $students_scores = array(85, 90, 88, 89, 92, 86, 90, 87, 91, 88, 91, 89); $grouped_scores = array_map('group_by', array(4), array($students_scores));
このうち、group_by関数は、1次元配列を長さ$n$の2次元配列にグループ化するために使用されます。次に、array_map 関数を使用してこの関数を $students_scores$ 配列に適用し、新しい 2D 配列を作成します。分割する長さが異なる場合は、配列関数の最初のパラメーターを長さ $m$ の配列に変更できます ($m$ は分割する長さです)。たとえば、次のコードは、元の配列を長さ 3 と長さ 4 の 2 次元配列に分割します:
$grouped_scores = array_map('group_by', array(3,4), array($students_scores));
4. ループ トラバーサルの使用
PHP では、ループを使用できます。トラバーサル メソッドは、1 次元配列を 2 次元配列に変換します。具体的な方法は以下の通りです。
$students_scores = array(85, 90, 88, 89, 92, 86, 90, 87, 91, 88, 91, 89); $grouped_scores = array(); for ($i = 0; $i < count($students_scores); $i += 4) { $grouped_scores[] = array_slice($students_scores, $i, 4); }
このうち、array_slice関数は配列の指定部分を取得する関数です。ここでは、ループ トラバーサルを使用して元の配列を分割し、毎回 $i$ から始まる 4 つの要素を取り出し、それらを小さな配列として結果の配列に追加します。
5. 概要
PHP で 1 次元配列を 2 次元配列に変換する方法は数多くありますが、最も一般的なのは、array_chunk 関数またはループ トラバーサルを使用することです。 array_map 関数もより柔軟な方法であり、さまざまなニーズに応じてさまざまな分割長を使用できます。実際のアプリケーションでは、最良の変換効果を達成するために、実際の状況に応じてさまざまな方法を選択する必要があります。
以上が1次元配列を2次元配列に変換するphpの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。