【发布时间】:2021-10-21 08:55:33
【问题描述】:
这是我的数组:
$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、$subkey 和 $_GET['CategoryFirst']、$_GET['CategorySecond'] 用于比较,因此如果用户当前页面具有这四个匹配值,则链接突出显示
我能够做到这一点,但这次我需要更多的东西。我需要能够从第二个 foreach 打印 $subval 并在循环之外使用它来将其放入
标签。我在 $firstCat 上成功地做到了,但 $secondCat 返回 nothing。
但如果尝试在嵌套的 foreach 循环中回显 $secondCat,它会返回正确的 $subval 数据。
我应该怎么做才能使 $secondCat 在 H3 标签(外部循环)上打印类似于 $firstCat 的正确数据?
【问题讨论】:
-
删除
else {$secondCat = ''; }语句怎么样?想象一下,您的数据位于数组(中间)之间的某个位置,一旦到达下一行,它将设置为$secondCat = ""。 -
@NcXNaV 圣牛!!解决了它:D非常感谢!