【问题标题】:Create table from 2 Arrays PHP从 2 个数组 PHP 创建表
【发布时间】:2022-01-10 07:11:29
【问题描述】:

我尝试在 HTML 中获得一个包含 3 行的表格。数据来自一个 XML 文件,我把它放在一个数组中,并用表中的 foreach 解析它。 问题是输出仅正确显示一个数组,第二个数组仅显示 1 个价格为 5。5 个不同的价格在数组“$recordpElements”中,我已经检查过了。我做错了什么?见下图中的例子。

public function xmlParserVB():string
  { 
        global $obj;
 
        $valuesvb = $this->xml->xpath("OBJEKT[@ID='$obj']//SAISON");
        $valuesp = $this->xml->xpath("//OBJEKT[@ID='$obj']//SAISON//PRICE");
        
        foreach (array_slice($valuesp,0,5) as $recordpElements);
        foreach (array_slice($valuesvb,0,5) as $recordvbElements)
        
         {
            $display .= '<tr>';
            $display .= '<td>'.$recordvbElements->DESCRIPTION.'</td>';
            $display .= '<td>'.$recordvbElements->FROM.' - '.$recordvbElements->UNTIL.'</td>';
            $display .= '<td>'.$recordpElements->PRICE.' &euro;</td>';
            $display .= '</tr>';
        
    
        }
        
     $display .= '';

      return $display;
        
  }

[![在此处输入图片描述][2]][2]

【问题讨论】:

    标签: php simplexml


    【解决方案1】:

    我不明白你的第 5 行代码。

    foreach (array_slice($valuesp,0,5) as $recordpElements);
    

    如果您运行此代码,那么您将在$recordpElements 中获得array_slice($valuesp,0,5) 的最后一条记录

    所以.. 您将在 $recordpElements 中获得 $valuesp 数组的第 5 条记录。

    我不明白为什么价格数组($valuesp)和产品数组($valuesvb)应该分开存在,但假设这是正确的,如果产品序列和价格序列匹配,你应该尝试这样的事情:

            $price = array_slice($valuesp,0,5);
            $index = 0;
            foreach (array_slice($valuesvb,0,5) as $recordvbElements)
            {
    
                $display .= '<tr>';
                $display .= '<td>'.$recordvbElements->DESCRIPTION.'</td>';
                $display .= '<td>'.$recordvbElements->FROM.' - '.$recordvbElements->UNTIL.'</td>';
                $display .= '<td>'.$price[$index]->PRICE.' &euro;</td>';
                $display .= '</tr>';
            
               $index++;
            }
    

    【讨论】:

    • 如果我运行该代码 foreach (array_slice($valuesp,0,5) as $recordpElements);我从数组中获取前 5 个元素
    • array_slice($valuesp,0,5) 是获取前 5 个元素,但是如果您运行 foreach(..... as $recordpElements);,那么您将在 $recordpElement 变量中获得 5 个元素的最后一个元素($valuesp)。之后您将使用 $recordpElements。所以你所有的价格都是数组的第五个价格。
    • 抱歉,我的代码中忘记了一封信。现在它工作正常。非常感谢聪明人 SILVERSTAR。
    猜你喜欢
    • 2022-12-02
    • 1970-01-01
    • 1970-01-01
    • 2022-07-30
    • 1970-01-01
    • 2021-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多