Php 从循环数组打印类似xml的结构
这是一个关于数组以及如何循环它们的问题 我有两个阵列:Php 从循环数组打印类似xml的结构,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,这是一个关于数组以及如何循环它们的问题 我有两个阵列: $arrayHeaders = array ('ID', 'DATE', 'NAME', 'STUDIES'); $arrayInformation = array (array('30540000000', '1998/05/05','Dave Mars','Philology'), array('30430000000', '2003/07/07','Sarah Scuassi','Translation')); 我需要循环它们,以
$arrayHeaders = array ('ID', 'DATE', 'NAME', 'STUDIES');
$arrayInformation = array (array('30540000000', '1998/05/05','Dave Mars','Philology'),
array('30430000000', '2003/07/07','Sarah Scuassi','Translation'));
我需要循环它们,以便打印如下内容:
echo "<".$header.">".$info."</".$header."><br>";
回显“$info”。
”;
我该怎么做?请注意,$arrayInformation可能有比两个多得多的子数组
非常感谢您只需嵌套两个foreach循环:
foreach ($arrayInformation as $values) {
foreach ($values as $key => $value) {
if (isset($arrayHeaders[$key])) {
$tag = $arrayHeaders[$key];
} else {
$tag = '?';
}
printf('<%s>%s</%s>', $tag, $value, $tag);
}
}
foreach($arrayInformation作为$value){
foreach($key=>$value的值){
if(isset($arrayHeaders[$key])){
$tag=$arrayHeaders[$key];
}否则{
$tag='?';
}
printf('%s',$tag,$value,$tag);
}
}
看到它工作。(您需要检查源代码……标记显示不正确。)
如果$arrayHeaders
包含的条目太少,则对于缺少的字段,输出将是foo
。foreach($arrayHeaders作为$header){
foreach($arrayHeaders as $header) {
foreach($arrayInformation as $info) {
echo "<".$header['ID'].">".$info[0]."</".$header['ID']."/>";
echo "<".$header['DATE'].">".$info[1]."</".$header['DATE']."/>";
echo "<".$header['NAME'].">".$info[2]."</".$header['NAME']."/>";
echo "<".$header['STUDIES'].">".$info[3]."</".$header['STUDIES']."/>";
}
}
foreach($arrayInformation作为$info){
回显“$info[0]”;
回显“$info[1]”;
回显“$info[2]”;
回显“$info[3]”;
}
}
两个数组的长度是否始终相等?如果可能的话,我建议使用一个关联数组。xml
而不是html
,因此最好将
更改为,我意识到
标记被我的浏览器(Chrome)跳过。据我所知,OP只想将数组显示为XML,而不想使用它检查源代码,Chrome认为它是html,因此它将所有内容解析为DIV
的add标题('Content-Type:text/xml')
到您的文件中,以正确显示它,当然
然后它就会工作:DYou是对的。也许我误解了这个问题。据我所说,OP只想将这些数组显示为XML数据(而不是表),他不会在代码中使用它,我只是为了可视化。所以,我认为他不想在XML脚本中添加额外的头;如果没有标题?@user712027。你可以做任何你想做的事情,我只是选择了这个非常简单的解决方案来避免错误。
<?php
$arrayHeaders = array ('ID', 'DATE', 'NAME', 'STUDIES');
$arrayInformation = array (array('30540000000', '1998/05/05','Dave Mars','English Philology'),
array('30430000000', '2003/07/07','Sarah Scuassi','Translation and Interpretation'));
foreach($arrayInformation as $data) {
for($i = 0; $i < 4; $i++) {
echo "<".$arrayHeaders[$i].">".$data[$i]."</".$arrayHeaders[$i]."><br/>";
}
echo "<br/>";
}