我已经达到了许多,数小时试图弄清楚如何从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>";
答案 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
,你的代码会更具可读性。