从PHP

时间:2018-01-12 17:32:11

标签: php arrays multidimensional-array

我已经达到了许多,数小时试图弄清楚如何从PHP中的多维数组中检索内容。我已经用多维数组工作了很多个小时而没有任何问题,但是现在我有一个让我疯狂的新例程。

这个数组特别是一个4行/ 10列二维数组,如下所示。

[
    [
        8038,
        'ClientA',
        'PersonA',
        'Construtor',
        'Ganhador Concurso',
        '2017-09-01',
        'Outro (Não Presencial)',
        'Prospeccao',
        '0',
        ''
    ],
    [
        9232,
        'ClientB',
        'PersonB',
        'Engenharia',
        'Ganhador Concurso',
        '0000-00-00',
        'Outro (Não Presencial)',
        'Prospeccao',
        '0',
        ''
    ],
    [
        9233,
        'ClientC',
        'PersonC',
        'Construtor',
        'Ganhador Concurso',
        '2017-09-01',
        'Outro (Não Presencial)',
        'Prospeccao',
        '0',
        ''
    ],
    [
        8037,
        'ClientD',
        'PersonD',
        'Construtor',
        'Ganhador Concurso',
        '2017-09-01',
        'Outro (Não Presencial)',
        'Prospeccao',
        '0',
        ''
    ]
]

数组名称为$matriz_linha3

我的代码检索它:

    echo "\n<p><table align=center border=1 cellspacing=0 cellpadding=2 bordercolor=#FFFFFF width=750>";
    $linha_cab  = "\n<tr align=top>";
    $linha_cab .= "\n<td colspan=10 bgcolor=#FFFF00><center>Entidades da Oportunidade</center></td>";
    $linha_cab .= "\n</tr>";
    echo $linha_cab;
    print_r($matriz_linha3);
    $contador1 = count($matriz_linha3);
    $contador2 = max(array_map('count',$matriz_linha3));
    for($p=0; $p<$contador1 ; $p++) {
       $linha_lks  = "\n<tr align=top>";
       for($q=1; $q<=$contador2 ; $q++) {
          $linha_lks .= "\n<td>$matriz_linha3[$p][$q]</td>";
       }  // fim do ciclo q
      $linha_lks .= "\n</tr>";
      echo $linha_lks;
    } // fim do ciclo p
    echo  "\n</table>";

This is the output(!)

1 个答案:

答案 0 :(得分:0)

问题在于字符串中的变量模板:

"\n<td>$matriz_linha3[$p][$q]</td>"

您创建的字符串用于输出值$matriz_linha3[$p][$q],就像Ganhador Concurso的值$matriz_linha3[0][4]一样。格式化的字符串仅作为变量读取$matriz_linha3[$p],然后打印[$q],从而产生输出。

要解决此问题,您应该在字符串中使用大括号来确定变量的开始和结束时间:

"\n<td>{$matriz_linha3[$p][$q]}</td>"

现在PHP知道,while字符串$matriz_linha3[$p][$q]是一个变量并计算它的值。

由于您不需要for循环中的索引,我宁愿建议使用foreach循环。

foreach($matriz_linha3 as $row) {
    $linha_lks  = "\n<tr align=top>";
    foreach($row as $column) {
        $linha_lks .= "\n<td>{$column}</td>";
    }
    $linha_lks .= "\n</tr>"
}

像这样你既不需要变量$contador1也不需要$contador2,你的代码会更具可读性。