迭代并比较2个数组

时间:2014-01-10 19:14:08

标签: php mysql sql arrays

我正在尝试通过表格迭代来自2个数组的信息。两个表都有一个相同的“构建”行,对于表的一个单元格,我想比较这些行的内容。我的代码如下:

        <?php 
        $sql = "SELECT b.building, a.building FROM cms_TABLE_B b, cms_TABLE_A a WHERE a.building = b.building";
        $result = $database->query($sql);
        $availabilities[] = $database->fetch_array($result);
        ?>

        <?php foreach ($TABLE_ARecords as $record): ?>

        <div class="table-row">
            <div class="property"><span><?php echo htmlencode($record['address']) ?></span></div>
            <div class="availabilities"><span><?php if(in_array($record['building'], $availabilities)) { echo "success"; } else { echo "fail"; } ?></span></div>
        </div>

        <?php endforeach ?>

我正在尝试从TABLE_A中获取“构建”的内容,并检查它是否与TABLE_B中的“building”内容相匹配。最终,如果内容匹配,我想计算他们所拥有的匹配数,并将其显示在表格单元格中。我不认为我会以正确的方式进行此操作,因为$ availablebilities数组甚至没有正确的信息 - 但使用while会导致表重复。我不想显示TABLE_B中的任何信息,我只想对它引用TABLE_A并显示计数。

2 个答案:

答案 0 :(得分:2)

您的代码可能会有点误导。您正在$availabilities[]中存储查询结果,但您正在循环浏览$TABLE_ARecords

只要您的查询正确,您就可以使用count($availabilities)

获取计数

说到您的查询,您的表格正在请求建筑物的'address'。我相信您正在寻找的查询将类似于

$sql = "SELECT a.building, a.address FROM cms_TABLE_A a 
        LEFT JOIN cms_TABLE_B b ON a.building = b.building";

答案 1 :(得分:1)

看起来您似乎正在尝试打印更多的“匹配数”。

你在哪里获得$ record ['address']?在查询中没有您获取地址信息。

在这里猜测。我愿意:

 $query = "SELECT a.building,a.address,a.otherInfo FROM cms_TABLE_B b, cms_TABLE_A a WHERE a.building = b.building";
 $result = $database->prepare($query);
 $result->execute();
 while($row = $result->fetch())
 {
      echo "<tr><td>" . $row['building'] . "</td><td>" . $row['address'] . "</td><td>" . $row['otherInfo'] . "</td></tr>";
     //or whatever table format/div format you want to use.
 }