列印出來的數組:
Array( [0] => Array ( [name] => 第一章 [cname] => 1 雅典娜的聖鬥士 ) [1] => Array ( [name] => 第一章 [cname] => 2 燃燒吧。。。 ))
foreach($k as $v){} 輸出的時候,發現第一章也跟著迴圈
第一章 1雅典娜的聖鬥士第一章 2 燃燒吧。。。
如何做到 第一章這個欄位只迴圈1次呢?
第一章 1雅典娜的聖鬥士 2 燃燒吧。。。
Array( [0] => Array ( [name] => 第一章 [0] => Array( [cname] => 1 雅典娜的聖鬥士 ) [1] => Array( [cname] => 2 燃燒吧 ) ))
回複內容:
列印出來的數組:
Array( [0] => Array ( [name] => 第一章 [cname] => 1 雅典娜的聖鬥士 ) [1] => Array ( [name] => 第一章 [cname] => 2 燃燒吧。。。 ))
foreach($k as $v){} 輸出的時候,發現第一章也跟著迴圈
第一章 1雅典娜的聖鬥士第一章 2 燃燒吧。。。
如何做到 第一章這個欄位只迴圈1次呢?
第一章 1雅典娜的聖鬥士 2 燃燒吧。。。
Array( [0] => Array ( [name] => 第一章 [0] => Array( [cname] => 1 雅典娜的聖鬥士 ) [1] => Array( [cname] => 2 燃燒吧 ) ))
'第一章', 'cname' => '1 雅典娜的聖鬥士'], ['name' => '第一章', 'cname' => '2 燃燒吧'], ['name' => '第二章', 'cname' => '1 燃燒吧'], ['name' => '第二章', 'cname' => '2 小宇宙'],];$result = [];foreach ($a as $chap) { $name = $chap['name']; if (!isset($result[$name])) { $result[$name] = []; } $result[$name][] = $chap['cname'];}print_r($result);
output:
Array( [第一章] => Array ( [0] => 1 雅典娜的聖鬥士 [1] => 2 燃燒吧 ) [第二章] => Array ( [0] => 1 燃燒吧 [1] => 2 小宇宙 ))
修改為完全符合題主輸出的答案
'第一章', 'cname' => '1 雅典娜的聖鬥士'], ['name' => '第一章', 'cname' => '2 燃燒吧'], ['name' => '第二章', 'cname' => '1 燃燒吧'], ['name' => '第二章', 'cname' => '2 小宇宙'],];$result = [];$nameMap = [];foreach ($a as $chap) { $name = $chap['name']; if (!isset($nameMap[$name])) { $id = count($nameMap); $nameMap[$name] = $id; } else { $id = $nameMap[$name]; } if (!isset($result[$id])) { $result[$id] = []; $result[$id]['name'] = $name; } $result[$id][] = ['cname' => $chap['cname']];}print_r($result);
output
Array( [0] => Array ( [name] => 第一章 [0] => Array ( [cname] => 1 雅典娜的聖鬥士 ) [1] => Array ( [cname] => 2 燃燒吧 ) ) [1] => Array ( [name] => 第二章 [0] => Array ( [cname] => 1 燃燒吧 ) [1] => Array ( [cname] => 2 小宇宙 ) ))
燃燒吧應該是雅典娜聖鬥士的子類?
我理解的意思是:一個結構中存放章節序號和章節名,遍曆整個列表,相同章節序號只輸出一次。
提供個思路,記錄上一次的name,遍曆數組元素,每次拿出一個元素的時候比較該元素的name欄位和上一次的name是否一樣,一樣不輸出,否則輸出並記錄,以下是不算標準虛擬碼的虛擬碼:
string lastName = "";foreach(node in list){ if (lastName != node.name) { print(node.name); lastName = node.name } else {} print(node.cname);}
由於題目改過了:
新的:
foreach (node in chaList){ print(name); foreach (sec in secList) { print(cname); }}