Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP显示FOREACH循环中变量的总计数_Php_Foreach - Fatal编程技术网

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

PHP显示FOREACH循环中变量的总计数,php,foreach,Php,Foreach,我有一个foreach循环,我想得到第二个echo的$item的计数/总数。有没有办法在foreach循环中计算变量并显示总数?如果不是,我可以执行单独的sql并存储计数并将其传递到下面指定的位置,还是只能从一个sql数组返回变量(本例中为行) 结果如下所示: 成本项目 成本13 成本2 1 成本3 4等 但是,这些项目与成本不存储在同一个表中。它们通过表ID连接。因此,在foreach中,$cost和$item必须是两个独立查询的结果。我想我的问题是,如果我这样做,当循环时,每一行如何知道与每

我有一个foreach循环,我想得到第二个echo的$item的计数/总数。有没有办法在foreach循环中计算变量并显示总数?如果不是,我可以执行单独的sql并存储计数并将其传递到下面指定的位置,还是只能从一个sql数组返回变量(本例中为行)

结果如下所示:
成本项目
成本13
成本2 1
成本3 4等

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

foreach ($row as $this) {
echo "<td>$this[cost]</td>"; 
echo "<td> //want to get count of $item variable here! </td>";
foreach($this行作为$this){
echo“$this[成本]”;
echo“//希望在此处获取$item变量的计数!”;
另一种方法是在foreach循环外部放置一个计数器,如下所示:

$counter = 0;
foreach ($row as $this) {
  echo "<td>$this[cost]</td>"; 
  echo "<td> //want to get count of {$counter} variable here! </td>";
  $counter++;
}
$my_array = array( 0 => array( 'test1' => '123'),
                   1 => array( 'test2' => '123'),
                   2 => array( 'test3' => '123') );

echo count($my_array); //will output 3
如果您有一个包含如下元素的数组:

$counter = 0;
foreach ($row as $this) {
  echo "<td>$this[cost]</td>"; 
  echo "<td> //want to get count of {$counter} variable here! </td>";
  $counter++;
}
$my_array = array( 0 => array( 'test1' => '123'),
                   1 => array( 'test2' => '123'),
                   2 => array( 'test3' => '123') );

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

根据我的理解,您希望从不同的表中带来两个值。它们与表id相连。为此,您不需要提出两个要求。一个是成本要求,一个是项目要求

更好的方法是在单个查询中使用
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>";
}
foreach($this行作为$this){
echo“$this[成本]”;
回显“$此[项目]”;
}
要了解join,请到这里来


希望它对您有用。

第二个变量是什么-$row['something']或$item。如果是$item,那么它是数组还是其他变量?我想计算的第二个变量是$item,但要获得$item需要一个count()使用多个联接。即使此变量不是foreach变量的一部分,我是否可以在foreach循环中插入整个SQL select with联接?或者我是否可以使用单独的SQL with JOIN来获取$item计数,然后将结果存储在中?我建议您在php中使用模板,这样就可以了,但$item的计数除外“我试图获取需要一个包含连接的复杂查询,我不确定是否可以将sql结果简单地存储在foreach中,因为foreach如何知道每行的结果是一致的?”JA4677我重新编辑了我的答案。请看一看,看它是否对您有帮助。谢谢。我知道您在做什么。这里的问题是,该代码没有重新编辑urn行,其中price=正好是某个金额,如$1.22。我需要以某种方式获得price=PID(price ID)的项目计数然后在PID=PID返回的每一行中动态地给出该计数。另外,我正在使用PDO。可以将其与mysqlii混合使用吗?这是我希望做的事情的正确轨道,但我还需要它来计数()$item的总数,我不确定如何在foreach循环中执行该操作。我假设需要第二个select count查询,但是我无法在foreach循环中使用它,因为我认为foreach循环只能处理一个查询/数组。或者我错了吗?无论如何,我如何获得$item的计数并将其显示在foreach循环中,以便它是每个循环的正确计数rowI感到困惑:([1]如果$item是数组,那么使用
count($this[item])
.inside
[2]如果您想要
$item
的总数,那么使用
$temp+=$this[$item]
[3]
$i=0
在foreach外部和
$i++;$this[item]
[4]在foreach
回声计数($row)外部
,我希望这些不同的选项将对您有所帮助。