如何从 PHP 中的多维数组回显数据?

How to echo data from a Multi-Dimensional Array in PHP?

我需要像这样echo/return将数据传到页面:

目录: 251-2010
规格: 20g
长度:10cm
尖端尺寸: 10mm

这是名为 $vararray 的数组。它包含几个不同的产品变体数据数组:

array(3) { 
    [0]=> array(1) { 
        ["251-2010"]=> array(1) { 
            ["Gauge"]=> string(3) "20g" 
        } 
    } 
    [1]=> array(1) { 
        ["251-2010"]=> array(1) { 
            ["Length"]=> string(4) "10cm" 
        } 
    } 
    [2]=> array(1) { 
        ["251-2010"]=> array(1) { 
            ["Tip Size"]=> string(4) "10mm" 
        } 
    } 
}
array(3) { 
    [0]=> array(1) { 
        ["600-VR1620"]=> array(1) { 
            ["Chart Type"]=> string(14) "Shirt" 
        } 
    } 
    [1]=> array(1) { 
        ["600-VR1152"]=> array(1) { 
            ["Chart Type"]=> string(13) "Trousers" 
        } 
    } 
    [2]=> array(1) { 
        ["600-VR16211"]=> array(1) { 
            ["Chart Type"]=> string(13) "Socks" 
        } 
    } 
}

我需要这样的东西:

$vargroup = array();

foreach ($vararray as $vitems) {

    $varmeta = array_values($vararray);

    foreach ($varmeta as $metain => $vardetails) {
  
        vargroup[$metain]['catalog'] = $vardetails['Catalog'];
        vargroup[$metain]['gauge'] = $vardetails['Gauge'];
        vargroup[$metain]['length'] = $vardetails['Length'];
        vargroup[$metain]['tipsize'] = $vardetails['Tip Size'];

    }
    $vars_profile = '';
    foreach ($vargroup as $vgrp) {
        $vars_profile .= $vgrp[catalog] . '<br>' . $vgrp[gauge] . '<br>' . $vgrp[length] . '<br>' . $vgrp[tipsize];
    }
}
return $vars_profile;

我很难把它做好。这是我需要它的外观:

目录: 251-2010
规格: 20g
长度:10cm
尖端尺寸: 10mm

目录: 600-VR1620
图表类型: 衬衫

目录: 600-VR1152
图表类型:裤子

目录: 600-VR16211
图表类型:袜子

您无法从同一个 $vardetails 元素中获取所有 CatalogGaugeLengthTip Size,它们位于数组的不同元素。您需要深入每个元素以获取其键和值。

您可以在处理原始数组的循环中创建 $vars_profile,不需要 $vargroup

要仅显示一次类别,请使用变量保存最后一个值。仅在该字段发生变化时输出类别行。

$vars_profile = '';

$last_metain = null;
foreach ($vararray as $vitem) {
    foreach ($vitem as $metain => $vardetails) {
        if ($metain != $last_metain) {
            $vars_profile .= "<p>\nCatalog: $metain<br>\n";
            $last_metain = $metain;
        }
        foreach ($vardetails as $key => $value) {
            $vars_profile .= "$key: $value<br>\n";
        }
    }
}

return $vars_profile;