在If中忽略其中定义的变量

时间:2016-05-26 06:10:06

标签: php if-statement foreach

我正在尝试根据唯一值构建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>
";          
?>

1 个答案:

答案 0 :(得分:1)

首先,请查看else子句的第一行:

$tempTeam == $match['Team'];

非常确定这不是你想要做的事情,在我看来,赋值可能是比比较更好的选择。

你所做的与以下内容没有什么不同:

$a = 1;
$a == $a + 1;
print ($a);

仍会输出1而不是2。如果你想做任务,它应该只有一个 =字符:

$tempTeam = $match['Team'];