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:)你遇到了什么麻烦?也许我能帮上忙:-)。我会在明天睡觉的时候尝试更改代码,这样我就不会把事情搞砸了,我会想得更清楚:)