我有这段代码用于按大小对数组关键数据进行分组:
$result = array();
foreach ($productInfo as $element) {
$result[$element['size']][] = $element;
}
并使用我的代码生成此分组数组:
Array
(
[14] => Array
(
[0] => stdClass Object
(
[id] => 1
[name] => test
)
[1] => stdClass Object
(
[id] => 2
[name] => another name
)
)
[6] => Array
(
[0] => stdClass Object
(
[id] => 3
[name] => name 3
)
)
[4] => Array
(
[0] => stdClass Object
(
[id] => 4
[name] => name 4
)
)
)
我可以使用以下代码显示密钥
名称:
<?php foreach($products as $key => $product):?>
<h5> <?= $key; ?> </h5>
<?php endforeach;?>
但是,我需要用html显示输出,如下所示:
<h5> 14 </h5>
<span> test </span>
<span> another name </span>
<h5> 6 </h5>
<span> name 3 </span>
<h5> 4 </h5>
<span> name 4 </span>
我怎么才能生成这个?!
编辑:
这是我的ProductInfo
:
Array
(
[0] => stdClass Object
(
[id] => 1
[name] => test
[size] => 14
)
[1] => stdClass Object
(
[id] => 2
[name] => another name
[size] => 14
)
[2] => stdClass Object
(
[id] => 3
[name] => name 3
[size] => 6
)
[3] => stdClass Object
(
[id] => 4
[name] => name 4
[size] => 4
)
)
对于未显示的原始$ProductInfo
数组,这可能是一种更简单的方法,但这将用于当前数组。 只需从当前$product
中提取所有name
值,然后implode
它们:
<?php foreach($products as $key => $product): ?>
<h5> <?= $key; ?> </h5>
<span> <?= implode('</span><span>', array_column($product, 'name')); ?> </span>
<?php endforeach; ?>
需要PHP>=7,array_column
才能处理对象,或者使用它来代替array_column
:
array_map(function($o) { return $o->name; }, $product)
请尝试以下操作:
<?php foreach ($productInfo as $key => $element): ?>
<h5><?= $element['size'] ?></h5>
<?php foreach ($element as $index => $value): ?>
<span><?= $value->name ?></span>
<?php endforeach ?>
<?php endforeach ?>
如果您的$ProductInfo
如下所示:
Array
(
[0] => stdClass Object
(
[id] => 1
[name] => test
[size] => 14
)
[1] => stdClass Object
(
[id] => 2
[name] => another name
[size] => 14
)
[2] => stdClass Object
(
[id] => 3
[name] => name 3
[size] => 6
)
[3] => stdClass Object
(
[id] => 4
[name] => name 4
[size] => 4
)
)
然后可以循环遍历每个对象并打印所需的值,如下所示:
<?php foreach ($productInfo as $key => $element) : ?>
<h5><?= $element->size ?></h5>
<span><?= $element->name ?></span>
<?php endforeach ?>
你需要两个周期。 假设您的数组:
foreach ($result as $id => $items) {
echo '<h5> ' . $id . ' </h5>';
foreach ($items as $product) {
echo '<span>' . $product['name'] . '</span>';
}
}