我有我的網站的形式爲用戶發佈結果報告到, 報告如下:分裂一個大陣列()在一個特定的指數
Nojoks's Tourney Bracket Tool Version 1.2.1.84
Tournament: 3/5 Backgammon 1:00pm
Date: 01/22/2017
Day: Sunday
Scheduled Start: 1.00pm PST
Actual Start: 20:00:30
Closed: 20:11:00
Host: Waiter()
Number of Players: 15
1st place: poppop
1st place email: [email protected]
2nd place: Sarge
2nd place email: [email protected]
3rd place: Litigolfer
3rd place email: [email protected]
3rd place: PhantomMask
3rd place email:
START POINTS
burnieboy 5
EU_BNL_Chris1 5
EU_IT_VIANG 5
GennaLee 5
happybear 5
MC_Vicky 5
merceaviles 5
MRC_cadet 5
poeticfool 5
UBG_Angel_D_8 5
UBG_sara1smoon 5
Litigolfer 60
PhantomMask 60
Sarge 90
poppop 120
STOP POINTS
這份報告將是有一些小的變化 我已經分成與陣列此相同每次爆炸
$records = explode(PHP_EOL, $_POST['points']);
$records = array_map('htmlspecialchars', $records);
$records = array_map ('trim', $records);
然後,我必須工作在從報告的,像這樣的頂部收集的信息:
// Get Date
$date = substr($records[2], 7, 10);
echo "<b>Tournament Date: </b>" . $date . "<br />";
// Get star time
$start_time = substr($records[4], 18, 7);
echo "<b>Tournament Start Time: </b>" . $start_time . "<br />";
現在我需要的一切工作,從$記錄[20]下來 什麼,我需要做的是很簡單的,我只是不知道如何讓我的數組的正確部分第一 我常常問我的用戶張貼只能從起點線下來的信息,停止點位,到了讓我的信息和分割很簡單,我用:
foreach($records as $record) {
$lastSpace = strrpos($record, ' ');
$player = trim(substr($record, 0, $lastSpace));
$points = trim(substr($record, $lastSpace+1));
此代碼將仍然在這種情況下工作,如果我可以刪除索引的0 - 19或者只是將數組拆分成一個新陣列$ records1 PS其報告中的此部分不斷變化,因此可以說這個報告來自於一個在線tournamen噸託管工具和每場比賽沒有設定數量的球員,它可以從8向上範圍
我真的不知道如何從我的代碼到你的代碼,但它幾乎工作我,將代碼添加到我的底部後,我做了部分print_r,並在該新數組中獲得1條記錄,如果您引用回我的上述帖子,新數組中的唯一記錄就是STOP之前的行POINTS輸出from print_r is:Array([0] => poppop [1] => 120)但是我看不到邏輯代碼爲什麼跳過報表中的所有其他行。 –
@MichaelBaxter我已經更新了一些代碼,它「跳過」數組的開始的原因是因爲它使用for循環和特定數組索引作爲邊界而不是整個數組。 – apokryfos