Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.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
使用foreach在smarty中嵌套php while循环_Php_Foreach_Smarty_Smarty3_Smarty2 - Fatal编程技术网

使用foreach在smarty中嵌套php while循环

使用foreach在smarty中嵌套php while循环,php,foreach,smarty,smarty3,smarty2,Php,Foreach,Smarty,Smarty3,Smarty2,我有以下PHP代码 $stmt = $pdo->prepare("SELECT * FROM memberships WHERE mb_status = 'enabled'"); $stmt-> execute(); $mbData = array(); while($f = $stmt->fetch()){ $mbData[] = $f; $mbsId = $f['mb_id']; $stmtUpg = $pdo->prepare(&

我有以下PHP代码

$stmt = $pdo->prepare("SELECT * FROM memberships WHERE mb_status = 'enabled'");
$stmt-> execute();

$mbData = array();
while($f = $stmt->fetch()){
  $mbData[] = $f;
  $mbsId = $f['mb_id'];

  $stmtUpg = $pdo->prepare("SELECT * FROM upgrade_validities WHERE upval_membership = :mbs");
  $stmtUpg-> bindValue(':mbs', $mbsId);
  $stmtUpg-> execute();

  $upgVal = array();
  while($uf = $stmtUpg->fetch()){
    $upgVal[] = $uf;
  }
}
$smarty->assign('mbData', $mbData);
$smarty->assign('upgVal', $upgVal);
使用foreach的Smarty代码

{foreach from=$mbData key=k item=b}
  {$b.mb_name}
  <!-- Listing Item -->
  {foreach from=$upgVal key=k item=a}
      <h3>Member Id: {$a.upval_id}</h3> // doesn't get displayed
  {/foreach}
  <!-- Listing Item / End -->
{/foreach}
{foreach from=$mbData key=k item=b}
{$b.mb_name}
{foreach from=$upgVal key=k item=a}
成员Id:{$a.upval\u Id}//未显示
{/foreach}
{/foreach}
在这里,嵌套的foreach循环中的成员Id不会显示。我不知道我犯了什么错误。

PHP:

$stmt = $pdo->prepare("SELECT * FROM memberships WHERE mb_status = 'enabled'");
$stmt-> execute();

$mbData = array();
while($f = $stmt->fetch()){
  $mbData[] = $f;
  $mbsId = $f['mb_id'];

  $stmtUpg = $pdo->prepare("SELECT * FROM upgrade_validities WHERE upval_membership = :mbs");
  $stmtUpg-> bindValue(':mbs', $mbsId);
  $stmtUpg-> execute();

  // change begin
  $upgValTemp = array();
  while($uf = $stmtUpg->fetch()){
    $upgValTemp[] = $uf;
  }
  $upgVal[$mbsId] = $upgValTemp;

}
$smarty->assign('mbData', $mbData);
$smarty->assign('upgVal', $upgVal);
SMARTY:

{foreach from=$mbData key=k item=b}
  {$b.mb_name}
  <!-- Listing Item -->
  {foreach from=$upgVal[$b.mb_id] key=k item=a} {* changed here *}
      <h3>Member Id: {$a.upval_id}</h3>
  {/foreach}
  <!-- Listing Item / End -->
{/foreach}
{foreach from=$mbData key=k item=b}
{$b.mb_name}
{foreach from=$upgVal[$b.mb_id]key=k item=a}{*此处更改*}
成员Id:{$a.upval_Id}
{/foreach}
{/foreach}

不要使用“{$a.upval\u id}”,试着使用“{$a[“upval\u id”]}”。@CharlesEF在你推荐我之前,你对smarty够熟悉吗?另外,它也不起作用。另外,请注意,如果for循环的嵌套位似乎有效,那么即使我没有得到
{$a.upval_id}
的值,我仍然会得到
成员id:
作为计数数的文本显示。所以在这里,我的while循环逻辑似乎有一些问题。在循环中运行数据库查询通常是更好的方法。在这种情况下,您可以轻松地运行一个查询来获取所需的信息。@RedStar Entertainment噢,对不起,我没有意识到我正在查看smarty代码。我想我把它和PHP搞混了。它正在工作!谢谢男士:)欢迎:)如果你把答案记为接受答案,我会很高兴:)是的。。完成!和你的+1配偶:)