【问题标题】:How foreach this array如何foreach这个数组
【发布时间】:2014-03-21 19:24:42
【问题描述】:

如何很好地显示数据结构。 下面贴上我的多维数组,请帮忙

Array
(
    [1] => Array
        (
            [0] => Array
                (
                    [LP] => 1
                    [Produkt] => product1
                )
        )
    [2] => Array
        (
            [0] => Array
                (
                    [LP] => 2
                    [number] => 157/03/2014
                    [Produkt] => product1
                )
            [1] => Array
                (
                    [LP] => 2
                    [number] => 157/03/2014
                    [Produkt] => product2

=== 我的代码 =========================================== ====

foreach ($a as $date) {
    $output .= "\t\t\t<ID>". $date[0]['LP']."</ID>\n";

    second foreach for product {
    $output .= "\t\t\t<Produkt>". Produkt ."</Produkt>\n";
}
}

因为我想要这样的东西 1 -产品1 2 -产品1 -产品2 3 -产品1 4 -产品1 -产品2

【问题讨论】:

  • 数组中只有一个产品,为什么需要第二个 foreach ?
  • 因为我想要这样的东西1 -Product1 2 -Product1 -Product2 3 -Product1 4 -Product1 -Product2
  • 所以我不清楚真正的问题是什么。您能否说明您希望输出的格式以及这与您当前的输出格式有何不同?
  • @MikeBrant 来自多个位置的一份文档。

标签: php arrays foreach


【解决方案1】:

因为您似乎希望输出是 XML,所以我建议使用以下代码:

function arraytoxml($xmlObj,$data) {
    foreach ($data as $key => $value) {
        if(is_array($value)) {
            if(is_numeric($key)) {
                $key = 'item_' . $key;
            }
            $subnode = $xmlObj->addChild("$key");
            arraytoxml($subnode,$value);
        } else {
            $xmlObj->addChild("$key","$value");
        }
    }
    return $xmlObj;
}

$xml = new SimpleXMLElement("<?xml version=\"1.0\"?><return></return>");
$return_xml = arraytoxml($xml,$data);
print($return_xml);

其中 $data 是您的关联数组。

【讨论】:

  • 警告:SimpleXMLElement::addChild() [simplexmlelement.addchild]:$xmlObj->addChild("$key","$value") 行上的未终止实体引用;
  • 你用的是什么版本的PHP?
  • 你能发布一个示例数组吗?我想在我自己的环境中运行一些测试...
  • 好的,这是我的完整代码pastebin.com/1Ej5yN8L 和 csv 文件:pastebin.com/r007ucan
  • 最终目标是将 CSV 文件转换为 XML 文件?
【解决方案2】:

您可以嵌套 foreach 循环以深入到数组的更深元素。

foreach ($a as $array) {
    foreach ($array as $key => $value) {
        $output .= "\t\t\t<ID>". $value['LP']."</ID>\n";
        $output .= "\t\t\t<Produkt>". $value['Produkt'] ."</Produkt>\n";
    }
}

【讨论】:

  • @damian 抱歉,我的英文拼写是 ['Product'],但应该是 ['Produkt']。答案已编辑。
【解决方案3】:
foreach($a as $array) {
    foreach($array as $value) {
        echo $value['LP'];
        //etc...
    }
}

【讨论】:

  • @damian:没有给出您发布的数组。
猜你喜欢
  • 1970-01-01
  • 2015-06-06
  • 2017-01-27
  • 2017-06-07
  • 1970-01-01
  • 2012-04-26
  • 2012-01-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多