在PHP上管理数组
我正在制作一个php脚本,其中我希望输出如下。 我有以下代码:在PHP上管理数组,php,Php,我正在制作一个php脚本,其中我希望输出如下。 我有以下代码: $query_man = query $output_man = mysql_query($query_man); if(mysql_num_rows($output_man) > 0){ while ($row = mysql_fetch_assoc($output_manutenzione)){ echo "\t" . $row['hostname']; echo "\n\t\tTipo Manute
$query_man = query
$output_man = mysql_query($query_man);
if(mysql_num_rows($output_man) > 0){
while ($row = mysql_fetch_assoc($output_manutenzione)){
echo "\t" . $row['hostname'];
echo "\n\t\tTipo Manutenzione: " . $row['type'];
echo "\n\t\tData inizio: " . $row['startdate'];
echo "\n\t\tData fine: " . $row['enddate'];
echo "\n\t\tUtente: " . $row['user'];
echo "\n\t\tMotivo: " . $row['desc'];
echo "\n\t\tStato: " . $row['State'] . "\n\n";
}
其中,type、startdate、enddate等是查询字段
通过这种方式,我得到了这样一个结果(例如):
好吧,我不明白如何把下面的话说出来:
Hello1
program
2016-10-13 09:00
2016-10-13 10:00
kevin
test
open
program
2016-10-13 13:00
2016-10-13 15:30
john
test
closed
Hello2
program
2016-10-12 11:00
2016-10-13 11:30
susan
test
closed
Hello3
program
2016-10-12 13:00
2016-10-12 15:30
clay
test2
open
i、 我想用相同的主机名对信息进行分组。
我该怎么办?您只需检查前面的主机名,如下所示:
$prev_hostname = "";
while ($row = mysql_fetch_assoc($output_manutenzione)){
if ($prev_hostname !== $row['hostname'])
echo "\t" . $row['hostname'];
echo "\n\t\tTipo Manutenzione: " . $row['type'];
echo "\n\t\tData inizio: " . $row['startdate'];
echo "\n\t\tData fine: " . $row['enddate'];
echo "\n\t\tUtente: " . $row['user'];
echo "\n\t\tMotivo: " . $row['desc'];
echo "\n\t\tStato: " . $row['State'] . "\n\n";
$prev_hostname = $row['hostname'];
}
您只需检查前面的主机名,如下所示:
$prev_hostname = "";
while ($row = mysql_fetch_assoc($output_manutenzione)){
if ($prev_hostname !== $row['hostname'])
echo "\t" . $row['hostname'];
echo "\n\t\tTipo Manutenzione: " . $row['type'];
echo "\n\t\tData inizio: " . $row['startdate'];
echo "\n\t\tData fine: " . $row['enddate'];
echo "\n\t\tUtente: " . $row['user'];
echo "\n\t\tMotivo: " . $row['desc'];
echo "\n\t\tStato: " . $row['State'] . "\n\n";
$prev_hostname = $row['hostname'];
}
记住
$row['hostname']
值并检查它是否与前一行相同。如果不是,则回显值:
$query_man = query
$output_man = mysql_query($query_man);
if(mysql_num_rows($output_man) > 0){
$prevHostname = '' ;
while ($row = mysql_fetch_assoc($output_manutenzione)){
if ($prevHostname != $row['hostname']) {
echo "\t" . $row['hostname'];
$prevHostname = $row['hostname'];
}
echo "\n\t\tTipo Manutenzione: " . $row['type'];
echo "\n\t\tData inizio: " . $row['startdate'];
echo "\n\t\tData fine: " . $row['enddate'];
echo "\n\t\tUtente: " . $row['user'];
echo "\n\t\tMotivo: " . $row['desc'];
echo "\n\t\tStato: " . $row['State'] . "\n\n";
}
}
记住
$row['hostname']
值并检查它是否与前一行相同。如果不是,则回显值:
$query_man = query
$output_man = mysql_query($query_man);
if(mysql_num_rows($output_man) > 0){
$prevHostname = '' ;
while ($row = mysql_fetch_assoc($output_manutenzione)){
if ($prevHostname != $row['hostname']) {
echo "\t" . $row['hostname'];
$prevHostname = $row['hostname'];
}
echo "\n\t\tTipo Manutenzione: " . $row['type'];
echo "\n\t\tData inizio: " . $row['startdate'];
echo "\n\t\tData fine: " . $row['enddate'];
echo "\n\t\tUtente: " . $row['user'];
echo "\n\t\tMotivo: " . $row['desc'];
echo "\n\t\tStato: " . $row['State'] . "\n\n";
}
}
如果您记得您处理的最后一个
主机名
,则可以将其与当前主机名进行测试,并且仅当它们在主机名
行的输出中不同时
$query_man = query
$output_man = mysql_query($query_man);
if(mysql_num_rows($output_man) > 0){
$last_host = NULL;
while ($row = mysql_fetch_assoc($output_manutenzione)){
if ($row['hostname'] != $last_host ) {
echo "\t" . $row['hostname'];
$last_host = $row['hostname'];
}
echo "\n\t\tTipo Manutenzione: " . $row['type'];
echo "\n\t\tData inizio: " . $row['startdate'];
echo "\n\t\tData fine: " . $row['enddate'];
echo "\n\t\tUtente: " . $row['user'];
echo "\n\t\tMotivo: " . $row['desc'];
echo "\n\t\tStato: " . $row['State'] . "\n\n";
}
}
这确实假设查询是按主机名排序的,但是您的示例输出是按这种方式排序的,所以我假设您已经这样做了
但我必须补充一点
每次使用
新代码中的数据库扩展
它已被弃用多年,并在PHP7中永远消失。
如果你只是在学习PHP,那么就把精力花在学习PDO
或mysqli
数据库扩展上。
如果您记得您处理的最后一个
主机名
,则可以将其与当前主机名进行测试,并且仅当它们在主机名
行的输出中不同时
$query_man = query
$output_man = mysql_query($query_man);
if(mysql_num_rows($output_man) > 0){
$last_host = NULL;
while ($row = mysql_fetch_assoc($output_manutenzione)){
if ($row['hostname'] != $last_host ) {
echo "\t" . $row['hostname'];
$last_host = $row['hostname'];
}
echo "\n\t\tTipo Manutenzione: " . $row['type'];
echo "\n\t\tData inizio: " . $row['startdate'];
echo "\n\t\tData fine: " . $row['enddate'];
echo "\n\t\tUtente: " . $row['user'];
echo "\n\t\tMotivo: " . $row['desc'];
echo "\n\t\tStato: " . $row['State'] . "\n\n";
}
}
这确实假设查询是按主机名排序的,但是您的示例输出是按这种方式排序的,所以我假设您已经这样做了
但我必须补充一点
每次使用
新代码中的数据库扩展
它已被弃用多年,并在PHP7中永远消失。
如果你只是在学习PHP,那么就把精力花在学习PDO
或mysqli
数据库扩展上。
试试下面的代码。您需要在代码中做一些更改,如下所示,以获取另一个数组
<?php $query_man = query
$output_man = mysql_query($query_man);
$array_result = array();
if(mysql_num_rows($output_man) > 0){
while ($row = mysql_fetch_assoc($output_manutenzione)){
echo "\t" . $row['hostname'];
echo "\n\t\tTipo Manutenzione: " . $row['type'];
echo "\n\t\tData inizio: " . $row['startdate'];
echo "\n\t\tData fine: " . $row['enddate'];
echo "\n\t\tUtente: " . $row['user'];
echo "\n\t\tMotivo: " . $row['desc'];
echo "\n\t\tStato: " . $row['State'] . "\n\n";
$array_result[$row['hostname']][] = $row;
}
print_r($array_result) ?>
尝试下面的代码。您需要在代码中做一些更改,如下所示,以获取另一个数组
<?php $query_man = query
$output_man = mysql_query($query_man);
$array_result = array();
if(mysql_num_rows($output_man) > 0){
while ($row = mysql_fetch_assoc($output_manutenzione)){
echo "\t" . $row['hostname'];
echo "\n\t\tTipo Manutenzione: " . $row['type'];
echo "\n\t\tData inizio: " . $row['startdate'];
echo "\n\t\tData fine: " . $row['enddate'];
echo "\n\t\tUtente: " . $row['user'];
echo "\n\t\tMotivo: " . $row['desc'];
echo "\n\t\tStato: " . $row['State'] . "\n\n";
$array_result[$row['hostname']][] = $row;
}
print_r($array_result) ?>
如果$row['hostname']
!=以前的主机名
-输出$row['hostname']
@Twinfriends很高兴为您服务如果$row['hostname']
!=以前的主机名
-output$row['hostname']
@Twinfriends很高兴为您服务还应该添加这样一条信息,即如果要这样做的话,查询将需要按主机名
排序。@naomik是的,我只是想添加一下,谢谢你的提醒,如果你自己在提供的代码中使用了PDO,你的答案会更好,但我还是投了赞成票p@ChristianF是的,我同意,但由于OP不太可能从mysql\uUcode>跳到PDO
,我认为这是在浪费我的时间和磁盘空间。我非常赞成将它们拖到现在,如果需要的话,踢踢和尖叫。最好在坏习惯形成之前,尽快结束它不管怎样,这只是一个小小的吹毛求疵。正如我所说的,你的回答很好。您已经以良好的方式介绍了所有相关内容。还应该补充一点,如果这项功能正常,查询将需要按主机名进行排序。@naomik Yup我只是想补充一点,谢谢您的提醒。如果您自己在提供的代码中使用PDO,您的答案会更好,但我仍然投了赞成票p@ChristianF是的,我同意,但由于OP不太可能从mysql\uUcode>跳到PDO
,我认为这是在浪费我的时间和磁盘空间。我非常赞成将它们拖到现在,如果需要的话,踢踢和尖叫。最好在坏习惯形成之前,尽快结束它不管怎样,这只是一个小小的吹毛求疵。正如我所说的,你的回答很好。你已经很好地涵盖了所有相关内容。