如何使用从嵌套foreach循环生成的值,在循环外?



这是我的数组:

$categories = array(
"0" => array( 
"name" => "All",
"id" => "100",
"sub" => array(
"0" => "All",
"100" => "Limited Sales",
),
),
"1" => array( 
"name" => "Costumes",
"id" => "200",
"sub" => array(
"0" => "All",
"100" => "Male",
"200" => "Female",
"300" => "Etc",
),
),
"2" => array( 
"name" => "Accessory",
"id" => "300",
"sub" => array(
"0" => "All",
"100" => "Bracelets",
"200" => "Rings",
"300" => "Necklaces",
"400" => "Etc",
),
),
"3" => array( 
"name" => "Convenience",
"id" => "400",
"sub" => array(
"0" => "All",
"100" => "Cards",
"200" => "Potions",
"300" => "Buffs",
"400" => "Etc",
),
),
);

这是我的当前循环代码:

$cat1 = (int)$_GET['CategoryFirst'];
$cat2 = (int)$_GET['CategorySecond'];


if(!empty($categories)){

echo "<div class='itemCategory'>";
$m = 0;
foreach( $categories as $key => $val ){
$catMain = $val['id'];
echo "<dl>";
echo "<dt>".$val['name']."</dt>";
$s = 0;
$end = count($val['sub']);
if($catMain == $cat1) { 
$firstCat = $val['name']; 
} else { 
$firstcat = '';
}   
foreach($val['sub'] as $subkey => $subval){
if($catMain == $cat1 && $subkey == $cat2){ 
$on = 'on';
} else { 
$on = ''; 
}
if($catMain == $cat1 && $subkey == $cat2) {
$secondCat = $subval; 
} else {
$secondCat = ''; 
}
if ($s == $end - 1) {
$last = ' last'; 
}else{ 
$last = ''; 
}
// If i echo $secondCat here it returns the correct data of $subval
echo "<dd".$last." class='".$on.$last."'><a href='?CategoryFirst=".$catMain."&CategorySecond=".$subkey."&Sort=0&SearchString='>".$subval."</a></dd>";
$s++;               

}           
echo "</dl>";
$m++;
}   
echo "</div>";  

} 
//NEED HELP HERE - $secondCat returns nothing
echo "<h3>".$firstCat.$secondCat."</h3>";
在代码中可以看到,我使用了$catmain注册表子项美元,$_GET['CategoryFirst'],$ _GET [' CategorySecond ']如果用户当前页面有这四个匹配的值,那么链接是高亮显示

我能够做到这一点,但这次我需要更多的东西。我需要能够打印$subval从第二个foreach中取出并在循环外使用它将其放入

标签。我成功地在$firstCat上执行了此操作但是$secondCat返回没有.

但是如果尝试在嵌套的foreach循环中回显$secondCat,它会返回正确的$subval数据。

我应该怎么做,使$secondCat打印正确的数据类似于H3标签上的$firstCat(外部循环)?

在您的内部foreach中使用此代码:

foreach($val['sub'] as $subkey => $subval){
if($catMain == $cat1 && $subkey == $cat2){ 
$on = 'on';
} else { 
$on = ''; 
}
if($catMain == $cat1 && $subkey == $cat2) {
$secondCat = $subval; 
}
if ($s == $end - 1) {
$last = ' last'; 
}else{ 
$last = ''; 
}
// If i echo $secondCat here it returns the correct data of $subval
echo "<dd".$last." class='".$on.$last."'><a href='?CategoryFirst=".$catMain."&CategorySecond=".$subkey."&Sort=0&SearchString='>".$subval."</a></dd>";
$s++;               

}  

这应该可以工作,因为变量将不会被空字符串覆盖,并且将保留在循环之外。

最新更新