首頁  >  文章  >  後端開發  >  一維數組轉二維數組 php

一維數組轉二維數組 php

WBOY
WBOY原創
2023-05-23 11:31:371062瀏覽

在 PHP 中,處理陣列是極為常見的需求之一。有時候我們需要將一維數組轉換成二維數組,這個過程可能會涉及多種資料操作,需要我們靈活運用數組函數來實現轉換。本文將介紹一些在 PHP 中實作一維數組轉換二維數組的方法和技巧。

一、將一維數組轉換成二維數組的需求

在 PHP 中,一維數組和二維數組都是常見的資料結構。一維數組是僅含有一個維度的數組,通常用於儲存一組相關的數據,例如說一個學生的考試成績。而二維數組則包含兩個維度的數組,通常用於儲存多組相關的數據,比如說一個班級所有學生的考試成績。在 PHP 中,我們通常使用 array 函數來建立一維數組,而使用二層的 array 函數來建立二維數組。以下是一個簡單的範例,用於建立一個一維數組和一個二維數組:

$array1 = array("语文"=>85, "数学"=>90, "英语"=>88);
$array2 = array(
             array("姓名"=>"张三","语文"=>85,"数学"=>90,"英语"=>88),
             array("姓名"=>"李四","语文"=>89,"数学"=>92,"英语"=>86),
             array("姓名"=>"王五","语文"=>90,"数学"=>87,"英语"=>91),
             array("姓名"=>"赵六","语文"=>88,"数学"=>91,"英语"=>89)
          );

有時我們會遇到需要將一個一維數組轉換成二維數組的情況。比方說,我們有一組學生的考試成績,需要將這組成績按照一定的規則進行分組,然後再將其轉換為一個二維數組,以方便後續的處理或展示。這就是將一維數組轉換成二維數組的需求,以下將介紹一些實作方法。

二、使用array_chunk 函數

array_chunk 函數是PHP 內建函數之一,其作用是將一個一維數組分割成多個指定長度的小數組,然後將這些小數組組成一個新的二維數組返回。例如,我們有以下一維數組:

$students_scores = array(85, 90, 88, 89, 92, 86, 90, 87, 91, 88, 91, 89);

我們需要將這個數組按照4 個一組進行分組,然後轉換為新的二維數組,可以使用下面的方法:

$grouped_scores = array_chunk($students_scores, 4);

這個方法將會傳回一個長度為3 的二維數組,每個小數組包含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 的小數組,然後這些小數組組成了一個新的二維數組。

三、使用 array_map 函數

array_map 函數是 PHP 內建函數之一,其作用是對一個或多個陣列的每個元素應用指定的回呼函數。我們可以使用 array_map 函數來將一個一維陣列轉換為一個二維陣列。具體方法如下:

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 函數用於將一個一維數組分組成長度為 $n$ 的二維數組。接著我們使用 array_map 函數將這個函數套用到 $students_scores$ 陣列上,得到一個新的二維陣列。如果需要分割的長度不同,可以將 array 函數的第一個參數改為長度為 $m$ 的數組,$m$ 為需要分割的長度。例如,下面的程式碼將原始數組分割成一個長度為3 和一個長度為4 的二維數組:

$grouped_scores = array_map('group_by', array(3,4), array($students_scores));

四、使用循環遍歷

在PHP 中,我們可以使用循環遍歷的方法將一個一維數組轉換為一個二維數組。具體方法如下:

$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 個元素,然後將它們作為一個小數組加入結果數組。

五、總結

在 PHP 中將一維數組轉換為二維數組有多種方法,最常見的是使用 array_chunk 函數或循環遍歷實作。 array_map 函數也是一個比較靈活的方法,可以根據不同的需求使用不同的分割長度。在實際應用中,我們需要根據實際情況選擇不同的方法,以達到最佳的轉換效果。

以上是一維數組轉二維數組 php的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn