2014-01-10 90 views
0

我想通过一个表迭代2个数组的信息。两个表都有一个相同的“建筑”行,对于表格的一个单元格,我想比较这些行的内容。我的代码如下:迭代和比较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“建设”的内容,并检查它是否从表-B“建设”的内容相匹配。最终,如果内容匹配,我想计算他们拥有的匹配数量并将其显示在表格单元格中。我不认为我会以正确的方式进行讨论,因为$ availabilities数组甚至没有正确的信息 - 但使用while会导致表重复其自身。我不想显示来自TABLE_B的任何信息,我只想引用TABLE_A并显示一个计数。

+0

好吧,如果你已经有了你需要在数组中的建筑物,你可以在php中使用count函数来查看有多少(count($ array))。如果您不需要关于建筑物的全部信息,但仅需要匹配的数量,则应在查询中对它们进行计数,并仅返回该数字。SELECT count(*)FROM cms_TABLE_B b,cms_TABLE_A a WHERE a.building = b。建设 –

回答

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

它看起来像你试图打印更多,然后只是“匹配数”。

你在哪里得到$ 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. 
} 
+2

只是想知道,但你为什么使用准备好的声明,没有准备任何东西?这有什么好处吗? – Joe

+1

你不需要。我只是习惯... – bart2puck