您好,欢迎访问一九零五行业门户网

PHP循环如何一个不循环 其他都循环?

打印出来的数组:
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); }}
其它类似信息

推荐信息