【发布时间】:2017-06-22 20:51:10
【问题描述】:
我有一个脚本,它应该从存储在服务器上的文本文件中输出某些参数。这是我的源代码(对格式感到抱歉):
<?php
$traw = file_get_contents("path/to/transactions.file");
$lns = explode("\n",$traw);
$mode['t'] = false;
$mode['c'] = false;
$mode['f'] = false;
# $t = array();
# $f = array();
$fs=0;
$ts=0;
for($i=0;$i<count($lns);$i++){
$ln = $lns[0];
if($ln=="==START TRANSACTION DATA=="){$mode['t']=true;}
elseif($ln=="=START CLIENT INFO="){$mode['c']=true;}
elseif($ln=="=END CLIENT INFO="){$mode['c']=false;}
elseif($ln=="==END TRANSACTION DATA=="){$mode['t']=false;$ts++;}
elseif($ln=="==START FAILED TRANSACTION=="){$mode['f']=true;}
elseif($ln=="==END FAILED TRANSACTION=="){$mode['f']=false;$fs++;}
else{
if($mode['t'] && $mode['c']){
$kv = explode(": ",$ln);
$t[$ts]['client'][strtolower($kv[0])] = $kv[1]; // set key to value in client data
}
elseif($mode['t'] && !$mode['c']){
$kv = explode(": ",$ln);
$t[$ts]['p'][strtolower($kv[0])] = $kv[1]; // set key to value in purchase data
}
elseif($mode['f']){
$kv = explode(": ",$ln);
$f[$fs][strtolower($kv[0])] = $kv[1]; // set key to value in failed data
}
else{
continue; // This line means nothing, and is most likely blank
}
}
}
for($i=0;$i<count($t);$i++){
$d = $t[$i];
echo '<tr>';
echo '<td>'.$d['photo id'].'</td>';
echo '<td>'.$d['print'].'</td>';
echo '<td>'.$d['quantity'].'</td>';
echo '<td>'.$d['price'].'</td>';
echo '<td>'.$d['date'].'</td>';
echo '<td>'.$d['additional info'].'</td>';
echo '<td><button type="button" class="btn btn-default" data-toggle="tooltip" data-placement="top" title="'.$d['client']['address'].'">'.$d['client']['name'].'</button><a href="mailto:'.$d['client']['email'].'"><'.$d['client']['email'].'></a></td>';
echo '</tr>';
}
for($i=0;$i<count($f);$i++){
$d = $f[$i];
echo '<tr>';
echo '<td>-</td>';
echo '<td>-</td>';
echo '<td>-</td>';
echo '<td>-</td>';
echo '<td>'.$d['date'].'</td>';
echo '<td>-</td>';
echo '<td>-</td>';
echo '</tr>';
}
print_r($t);
print_r($f);
?>
这是标准 HTML <tbody> 元素中的输出。我知道交易文件已正确加载,因为在测试脚本时正确输出了文件。我也知道脚本迭代了正确的次数,因为如果我使用echo $i,它会返回预期的结果。但是,当我运行脚本时,表中没有任何输出。
这是交易文件的内容:
==START FAILED TRANSACTION==
Date: 05-2-2017 (Sunday, February 5th, 2017) UTC
==END FAILED TRANSACTION==
==START FAILED TRANSACTION==
Date: 05-2-2017 (Sunday, February 5th, 2017) UTC
==END FAILED TRANSACTION==
==START FAILED TRANSACTION==
Date: 05-2-2017 (Sunday, February 5th, 2017) UTC
==END FAILED TRANSACTION==
==START FAILED TRANSACTION==
Date: 05-2-2017 (Sunday, February 5th, 2017) UTC
==END FAILED TRANSACTION==
==START FAILED TRANSACTION==
Date: 05-2-2017 (Sunday, February 5th, 2017) UTC
==END FAILED TRANSACTION==
==START TRANSACTION DATA==
=START CLIENT INFO=
Address: {ADDR}
Name: {NAME}
Email: {EMAIL}
=END CLIENT INFO=
Inventory ID: {INV}
Photo ID: {ID}
Quantity: {QTY}
Print: {PRNT}
Price: {PRC}
Date of transaction: {DATE}
Raw Braintree transaction data: {TRNS}
Additional info: {ADTL}
==END TRANSACTION DATA==
这可能是我犯的一个非常明显的错误!
附:该页面使用 Bootstrap 和 jQuery,如果这会影响任何内容。
附言附带问题:由于某种原因,任何echo 语句都输出到表之外。不是特别重要,只要表格行和单元格在里面。
【问题讨论】:
-
我注意到您在代码中没有
<table>标记...它们只是在这里被排除在外还是您忘记了它们?也不要为格式化道歉 - 为什么不直接修复它?
标签: php html for-loop html-table echo