2016-11-29 41 views
-1

我已經繼承了一個項目,我需要使用以下格式將數據添加到表中。PHP Array,動態數組名稱或其他技術

Fitness101,FT101,EA101,RX101 

什麼我得到一個數組如下:

Fitness101,FT101 
Fitness101,EA101 
Fitness101,RX101 
Fitness102,FT102 
Fitness102,EA102 
Fitness102,RX102 
Fitness103,FT103 
Fitness103,EA103 
Fitness103,RX103 

我要組班每個健身水平,並添加以下3條記錄/行:

Fitness101,FT101,EA101,RX101 
Fitness102,FT102,EA102,RX102 
Fitness103,FT103,EA103,RX103 

完成此操作的最佳方法是什麼?

我嘗試了幾個if/while/foreach語句/循環但沒有運氣。

是否可以使用動態數組名稱,或者我是否使這個過程比需要更復雜?

謝謝。

如果我打印陣列它看起來像這樣:

[0] => Fitness101,FT101 
[1] => Fitness101,EA101 
[2] => Fitness101,RX101 
[4] => Fitness102,FT102 
[5] => Fitness102,EA102 
[6] => Fitness102,RX102 
[7] => Fitness103,EA103 
[8] => Fitness103,EA103 
[9] => Fitness103,RX103 
+1

你是從一個多維數組,一串長串還是什麼開始的?你能編輯這個問題來顯示你在PHP代碼中開始的東西嗎? –

回答

-1

假設你輸入下列方式格式化:

$entries = [ 
    "Fitness101,FT101", 
    "Fitness101,EA101", 
    "Fitness101,RX101", 
    "Fitness102,FT102", 
    "Fitness102,EA102", 
    "Fitness102,RX102", 
    "Fitness103,FT103", 
    "Fitness103,EA103", 
    "Fitness103,RX103" 
]; 

$levels = array(); 
foreach ($entries as $entry) { 
    list($level, $class) = explode(',', $entry); 
    if (!isset($levels[$level])) { 
     $levels[$level] = $level; 
    } 
    $levels[$level] .= ','.$class; 
} 
$levels = array_values($levels); 

echo json_encode($levels); 
// Prints: 
// ["Fitness101,FT101,EA101,RX101","Fitness102,FT102,EA102,RX102","Fitness103,FT103,EA103,RX103"] 
+0

這工作,讓我在正確的方向。非常感謝! – Gman

0

像往常一樣,這種類型的分組問題,你可以使用您希望在您的結果數組中作爲鍵分組的列。如果你開始使用這種格式的數組:

$your_array = [ 
    ['Fitness101','FT101'], 
    ['Fitness101','EA101'], 
    // etc. 
]; 

然後它的工作是這樣的:

foreach ($your_array as $row) { 
    $result[$row[0]][0] = $row[0]; // write or overwrite the first column 
    $result[$row[0]][] = $row[1]; // append the subsequent columns 
} 

這裏$row[0]與「Fitness101」第一列等,而當您使用它作爲$result數組中的一個關鍵字,您將將每個值添加到該鍵所指示的行中的一列中,以便將它們組合在所需的輸出中。


如果你有一個字符串數組,那麼它幾乎是一樣的,只是首先爆炸行。

$your_array = [ 
    'Fitness101,FT101', 
    'Fitness101,EA101', 
    // etc. 
]; 

foreach ($your_array as $row) { 
    $row = explode(',', $row); 
    $result[$row[0]][0] = $row[0]; 
    $result[$row[0]][] = $row[1]; 
}