Php 循环遍历数组并回显具有相同ID的所有子数组

Php 循环遍历数组并回显具有相同ID的所有子数组,php,arrays,Php,Arrays,这是一个简化的版本,我有一个数组,里面装满了项目,有时可能会有重复的项目 $items = array( array( 'id' => 1, 'title' => 'Item 1' ), array( 'id' => 2, 'title' => 'Item 2' ), array( 'id' => 3, 'title

这是一个简化的版本,我有一个数组,里面装满了项目,有时可能会有重复的项目

$items = array(
    array(
        'id' => 1,
        'title' => 'Item 1'
        ),
    array(
        'id' => 2,
        'title' => 'Item 2'
        ),
    array(
        'id' => 3,
        'title' => 'Item 3'
        ),
    array(
        'id' => 1,
        'title' => 'Item 1'
        ),
    array(
        'id' => 3,
        'title' => 'Item 1'
        ),
    array(
        'id' => 5,
        'title' => 'Item 5'
        ),
    array(
        'id' => 3,
        'title' => 'Item 1'
        ),
    );
?>
我需要的是遍历每个项目并回显其标题,但如果数组中有更多具有相同ID的项目,我需要在当前项目旁边回显它们的标题,然后跳过它们

<ul>
    <?php foreach($items as $item) : ?>
        <li>
            <?php echo $item['title']; ?> 
            <?php // check for other items and echo their titles if they are same
        </li>
    <?php endforeach; ?>
</ul>
最后,这个例子应该是这样的

<li>Item 1 Item 1</li>
<li>Item 2</li>
<li>Item 3 Item 3 Item 3</li>
<li>Item 5</li>
  • 项目1项目1
  • 项目2
  • 项目3项目3项目3
  • 项目5
  • 有没有想过如何在不造成混乱的情况下解决这个问题?:)

    我在玩这样的东西,在某个地方回荡着双线。。一般来说不好

    <?php $int = 0; ?>
    <?php foreach($items as $item) : ?>
        <li>
            <?php 
            echo $item['title']; 
            $id = $item['id'];
            unset($items[$int]);
            $int++;
    
            foreach($items as $item_second) {
                if($item_second['id'] === $id) {
                    echo $item_second['title'];
                    unset($item_second);
                }
            }
            ?>
        </li>
    <?php endforeach; ?>
    
    
    

  • 在渲染到二维数组之前准备数组怎么样? 它看起来像这样:

    <?php
        $itemsForRender = array();
    
        foreach ($items as $item) {
            if (!isset($itemsForRender[$item['id']])) {
                $itemsForRender[$item['id']] = [];
            }
    
            $itemsForRender[$item['id']][] = $item['title'];
        }
    ?>
    
    
    
    然后很容易:

    <?php foreach($itemsForRender as $items) : ?>
        <li>
            <?php echo implode(' ', $items); ?>
        </li>
    <?php endforeach; ?>
    
    
    

  • 在渲染到二维数组之前准备数组怎么样? 它看起来像这样:

    <?php
        $itemsForRender = array();
    
        foreach ($items as $item) {
            if (!isset($itemsForRender[$item['id']])) {
                $itemsForRender[$item['id']] = [];
            }
    
            $itemsForRender[$item['id']][] = $item['title'];
        }
    ?>
    
    
    
    然后很容易:

    <?php foreach($itemsForRender as $items) : ?>
        <li>
            <?php echo implode(' ', $items); ?>
        </li>
    <?php endforeach; ?>
    
    
    

  • Hm。。我没有这样做,因为我的例子比较复杂,有更多的数据和链接。。。我会把这个解决方案看作是一个计划B:)你遇到了什么麻烦?也许我能帮上忙:-)。我明天睡觉的时候会试着修改代码,这样我就不会把事情搞砸了,我会想得更清楚:)嗯。。我没有这样做,因为我的例子比较复杂,有更多的数据和链接。。。我会把这个解决方案看作是一个计划B:)你遇到了什么麻烦?也许我能帮上忙:-)。我会在明天睡觉的时候尝试更改代码,这样我就不会把事情搞砸了,我会想得更清楚:)