这是我的数组:
$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++;
}
这应该可以工作,因为变量将不会被空字符串覆盖,并且将保留在循环之外。