PHP迴圈如何一個不迴圈 其他都迴圈?

來源:互聯網
上載者:User
列印出來的數組:

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);    }}
  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.