PHP显示FOREACH循环中变量的总计数

时间:2015-03-29 19:49:02

标签: php foreach

我有一个foreach循环,我想得到第二个回声的$ item的计数/总数。有没有办法计算变量并在foreach循环中显示总数?如果没有,我可以做一个单独的sql并存储计数并将其传递到下面指出的位置,或者你只能从一个sql数组返回变量(在这种情况下为$ row)?

结果如下:
成本项目
费用1 3
费用2 1
费用3 4等。

但是,这些项目不会与Cost存储在同一个表中。它们通过表ID连接进行连接。所以在foreach中,$ cost和$ item必须是两个单独查询的结果。我的问题是,如果我这样做,每行如何知道哪个项目与每个成本匹配,因为它循环?

foreach ($row as $this) {
echo "<td>$this[cost]</td>"; 
echo "<td> //want to get count of $item variable here! </td>";

2 个答案:

答案 0 :(得分:0)

$counter = count($row);  //counts the total elements of $row array

另一种方法是将一个计数器放在foreach循环之外,如下所示:

$counter = 0;
foreach ($row as $this) {
  echo "<td>$this[cost]</td>"; 
  echo "<td> //want to get count of {$counter} variable here! </td>";
  $counter++;
}

稍后编辑以了解我的意思:

$sql_response = mysqli_query($link, "SELECT `product_name`, `product_price` FROM `products` WHERE `product_price`>499");   //let's assume that we have 98 products that meet this condition
$no_of_rows = 0;
if ($sql_response) $no_of_rows = mysqli_num_rows($sql_response);  //this will count the number of rows that are in $sql_response right now
echo $no_of_rows;  //will output 98 if the query was successfully

如果你有一个包含这样的元素的数组:

$my_array = array( 0 => array( 'test1' => '123'),
                   1 => array( 'test2' => '123'),
                   2 => array( 'test3' => '123') );

echo count($my_array); //will output 3

答案 1 :(得分:0)

根据我的理解,您希望从不同的表中带来两个值。它们与Table_id相关联。为此,你不需要解雇两个quires。一个用于成本,一个用于项目。

更好的方法是在单个查询中使用join。并同时显示。

select c.cost, i.item
from cost_table c
left join item_table i on i.id = c.id 
where something = something 

现在可以在foreach中使用

foreach ($row as $this) {
  echo "<td> $this[cost] </td>"; 
  echo "<td> $this[item] </td>";
}

要了解加入,请转到此处http://www.w3schools.com/sql/sql_join_left.asp

希望对你有用..