• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

php 搞代码 4年前 (2022-01-25) 8次浏览 已收录 0个评论
文章目录[隐藏]

打印出来的数组:

<code>Array(    [0] => Array        (            [name] => 第一章            [cname] => 1 雅典娜的圣斗士        )    [1] => Array        (            [name] => 第一章            [cname] => 2 燃烧吧。。。        ))</code>

foreach($k as $v){} 输出的时候,发现第一章也跟着循环

<code>第一章  1雅典娜的圣斗士第一章  2 燃烧吧。。。</code>

如何做到 第一章这个字段只循环1次呢?

<code>第一章  1雅典娜的圣斗士        2 燃烧吧。。。</code>
<code>Array(    [0] => Array        (            [name] => 第一章                    [0] => Array(                       [cname] => 1 雅典娜的圣斗士                    )                   <mark>@本文来源gaodaimacom搞#代%码@网-</mark><strong>搞代gaodaima码</strong> [1] => Array(                       [cname] => 2 燃烧吧                    )        ))</code>

回复内容:

打印出来的数组:

<code>Array(    [0] => Array        (            [name] => 第一章            [cname] => 1 雅典娜的圣斗士        )    [1] => Array        (            [name] => 第一章            [cname] => 2 燃烧吧。。。        ))</code>

foreach($k as $v){} 输出的时候,发现第一章也跟着循环

<code>第一章  1雅典娜的圣斗士第一章  2 燃烧吧。。。</code>

如何做到 第一章这个字段只循环1次呢?

<code>第一章  1雅典娜的圣斗士        2 燃烧吧。。。</code>
<code>Array(    [0] => Array        (            [name] => 第一章                    [0] => Array(                       [cname] => 1 雅典娜的圣斗士                    )                    [1] => Array(                       [cname] => 2 燃烧吧                    )        ))</code>

<code class="php"><?php$a = [    ['name' => '第一章', '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);</code>

output:

<code>Array(    [第一章] => Array        (            [0] => 1 雅典娜的圣斗士            [1] => 2 燃烧吧        )    [第二章] => Array        (            [0] => 1 燃烧吧            [1] => 2 小宇宙        ))</code>

修改为完全符合题主输出的答案

<code><?php$a = [    ['name' => '第一章', '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);</code>

output

<code>Array(    [0] => Array        (            [name] => 第一章            [0] => Array                (                    [cname] => 1 雅典娜的圣斗士                )            [1] => Array                (                    [cname] => 2 燃烧吧                )        )    [1] => Array        (            [name] => 第二章            [0] => Array                (                    [cname] => 1 燃烧吧                )            [1] => Array                (                    [cname] => 2 小宇宙                )        ))</code>

燃烧吧应该是雅典娜圣斗士的子类?

我理解的意思是:一个结构中存放章节序号和章节名,遍历整个列表,相同章节序号只输出一次。

提供个思路,记录上一次的name,遍历数组元素,每次拿出一个元素的时候比较该元素的name字段和上一次的name是否一样,一样不输出,否则输出并记录,以下是不算标准伪代码的伪代码:

<code>string lastName = "";foreach(node in list){    if (lastName != node.name)    {        print(node.name);        lastName = node.name    }    else    {}        print(node.cname);}</code>

由于题目改过了:
新的:

<code>foreach (node in chaList){    print(name);    foreach (sec in secList)    {        print(cname);    }}</code>

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:PHP循环如何一个不循环 其他都循环?

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址