使用这个样本多维数组(包含颜色的调色板,其中包含各自的阴影),假设我想在内嵌列表中显示颜色(以逗号分隔),如果适用,还可以显示其各自的颜色括号中的阴影,也在内嵌(逗号分隔)列表中。
我可以很容易地破坏内部数组(阴影),但无法弄清楚如何使用外部数组(颜色),因为它包含必须为每种颜色运行的阴影数组。
我已经看到有几种解决方案来破坏多维数组,但这些似乎并不需要为每个数组运行一个可能的内部数组。也许还有另一种方法可以用逗号分隔条目?
虽然我在谈论这个问题,但有没有办法用'和'替换内爆字符串的最后一个逗号?
提前致谢。
$sql = "SELECT DISTINCT colour_id, colour_nm, colour_url
FROM palettecolours
INNER JOIN colour ON colourid = colour_id
WHERE paletteid = '$palette_id'";
while ($row = mysqli_fetch_array($result))
{
$colour = '<a href = "/colour/' . $row['colour_name'] . '">' . $row['colour_url'] . '</a>';
$colours[$row['colour_id']] = array('colour' => $colour, 'shades' => array());
}
$sql = "SELECT colourid, shade_name, shade_url
FROM palettecolours
INNER JOIN shade ON shadeid = shade_id
WHERE paletteid = '$palette_id'";
while ($row = mysqli_fetch_array($result))
{
$shade = '<a href = "/shade/' . $row['shade_name'] . '">' . $row['shade_url'] . '</a>';
$colours[$row['colourid']]['shades'][] = array('shade' => $shade);
}
<?php foreach ($colours as $colour): ?>
<?php echo $colour['colour']; ?>
<?php if(!empty($colour['shades'])) { ?>(<?php echo implode(", ", $colour['shades']); ?>)<?php } ?>
<?php endforeach; ?>
当前显示: - 红色(洋红色,勃艮第,深红色)蓝绿色黄色(埃及棉,木兰)白色(软月亮)
期望的结果: - 红色(洋红色,勃艮第,深红色),蓝色,绿色,黄色(埃及棉,木兰),白色(软月亮)
答案 0 :(得分:0)
递归函数怎么样?像
这样的东西function array_implode_recursive($glue, $data, $before = '(', $after = ')') {
//Loop through every child and check whether it is an array or not and implode it if so
foreach($data as &$element) {
if (is_array($element)) {
$element = $before . array_implode_recursive($glue, $element) . $after;
}
}
//It's really safe to erase this variable as sometimes PHP has fun with them
unset($element);
return implode($glue, $data);
}
像这样使用
$mydata = implode_recursive(', ', $data);
$mydata = implode_recursive(', ', $data, '[', ']');
希望有所帮助
答案 1 :(得分:0)
既然你知道你的阵列是什么样的,并且看起来有钥匙,你可以尝试类似于我所做的事情here。