多维数组:内爆外部数组和内部数组‏.


Multidimensional array: implode both outer and inner arrays‏

使用这个示例多维数组(调色板包含颜色,而调色板又包含它们各自的色调),假设我想在内爆列表(逗号分隔)中显示颜色,如果适用,在括号中显示其各自的色调,也在内爆(逗号分隔的)列表中。

我可以很容易地内爆内部数组(阴影),但无法弄清楚如何使用外部数组(颜色),因为它包含每个颜色必须贯穿的阴影数组。

我已经看到了几种内爆多维数组的解决方案,但这些解决方案似乎不需要为每一个都运行一个可能的内部数组。也许还有另一种方法可以用逗号分隔条目?

当我讨论这个话题时,有没有办法用"And"代替内爆字符串的最后一个逗号?

提前谢谢。

$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; ?>

当前显示:-红色(品红色、勃艮第、深红)蓝绿色黄色(埃及棉、木兰花)白色(柔和的月亮)

预期结果:红色(洋红、勃艮第、深红)、蓝色、绿色、黄色(埃及棉、木兰花)、白色(柔和的月亮)

递归函数怎么样?类似的东西

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, '[', ']');

希望它能帮助

既然你知道你的数组是什么样子的,而且它似乎有键,你可以尝试类似于我在这里所做的事情。