我正在尝试根据唯一值构建div。因此,对于每一行,脚本都会根据$ tempTeam检查团队名称。如果它们相等,则该行将添加到现有div中的表中。如果它们不相等,则会创建一个新的div和table,并在那里添加该行。
但是,if部分无法识别$ tempTeam何时等于团队,因此它永远不会运行,即使else部分正确设置$ tempTeam。所以我想知道为什么变量适用于代码的else部分,而不是if部分。
这是完整的代码,虽然当我第一次定义$ tempTeam时麻烦就开始了。谢谢你的帮助。
<?php
$csv = file_get_contents('schedules.csv');
$csv_array = explode("\n", $csv);
unset($csv_array[count($csv_array) - 1]);
$headers = explode(",", $csv_array[0]);
// iterate through all lines of CSV, skipping first header line
for($i=1;$i<count($csv_array);$i++) {
$line = explode(",", $csv_array[$i]);
// iterate through all headers and assign corresponding line value
foreach ($headers as $index => $header){
$parsed_array[$i][$header] = $line[$index];
}
}
// create divs and tables
$tempTeam = '';
foreach ($parsed_array as $i => $match) {
if ($tempTeam == $match['Team']) {
echo "
<tr><td>$match[Date]</td><td>$match[Result]</td><td>$match[Location]</td><td>$match[Opponent]</td></tr>
";
}
else if ($tempTeam == '') {
$tempTeam = $match['Team'];
echo "
<div class=\"schedule\" data-container=\"$match[League]\">
<table>
<thead>
<tr>
<th colspan=\"4\">$match[Team]</th>
</tr>
<tr>
<th>Date</th><th>Result</th><th>Location</th><th>Opponent</th>
</tr>
</thead>
<tbody>
<tr><td>$match[Date]</td><td>$match[Result]</td><td>$match[Location]</td><td>$match[Opponent]</td></tr>
";
}
else {
$tempTeam = $match['Team'];
echo "
</tbody>
</table>
</div>
<div class=\"schedule\" data-container=\"$match[League]\">
<table>
<thead>
<tr>
<th colspan=\"4\">$match[Team]</th>
</tr>
<tr>
<th>Date</th><th>Result</th><th>Location</th><th>Opponent</th>
</tr>
</thead>
<tbody>
<tr><td>$match[Date]</td><td>$match[Result]</td><td>$match[Location]</td><td>$match[Opponent]</td></tr>
";
}
}
echo "
</tbody>
</table>
</div>
";
?>
答案 0 :(得分:1)
首先,请查看else
子句的第一行:
$tempTeam == $match['Team'];
我非常确定这不是你想要做的事情,在我看来,赋值可能是比比较更好的选择。
你所做的与以下内容没有什么不同:
$a = 1;
$a == $a + 1;
print ($a);
仍会输出1
而不是2
。如果你想做任务,它应该只有一个 =
字符:
$tempTeam = $match['Team'];