使用foreach在smarty中嵌套php while循环
我有以下PHP代码使用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(&
$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配偶:)