有人可以告诉我为什么这不起作用吗?
“isTrue”=> true实际上是一个确定该字段的内容是否存在的函数,我已经var_dumped它并且它可以工作。
我正在尝试输出导航链接中的一个(或全部,取决于“isTrue”=> true),如下所示:
<li><a class="gallery-tab" href="#gallery-tab">gallery</a></li>
作为内容类型特定的导航元素。我以前的工作方式比较粗糙,但是我试图让我的代码更易于维护,这对我来说是一个令人沮丧的障碍。
当我运行下面的代码时,我得到NULL
虽然我对PHP非常熟悉,但我不是经验丰富的兽医。通常,当我向你们展示这样的问题时,有人会很快看到这些问题而且我一直在试图解决问题时碰到我的头。
以下是相关代码:
<?php
$navArray[0] = array(
"title" => "statement",
"class" => "statement-tab",
"isTrue" => true
);
$navArray[1] = array(
"title" => "gallery",
"class" => "gallery-tab",
"isTrue" => true
);
$navArray[2] = array(
"title" => "video",
"class" => "video-tab",
"isTrue" => true
);
$navArray[3] = array(
"title" => "poetry",
"class" => "poetry-tab",
"isTrue" => true
);
function get_nav() {
foreach ($navArray as $array ) {
if ($array["isTrue"] == true) {
$output = "";
$output = $output . "<li>";
$output = $output . '<a class="' . $array["class"] . '" href="#' . $array["class"] . '" />';
$output = $output . $array["title"];
$output = $output . "</a>";
$output = $output . "</li>";
return $output;
}
}
}
$getNav = get_nav();
?>
<pre><?php var_dump($getNav); ?></pre>
如果有任何不清楚的地方,请告诉我,我会尽力澄清。
编辑: zeantsoi善意地指出我正在调用错误的数组。我修好并测试了它,但仍然没有运气。
答案 0 :(得分:0)
您的代码中必须更改三件事:
1 - 呼叫$navArray
而不是$nav_array
。
2 - $output = "";
必须在foreach
循环之前。
3 - return $output;
必须在get_nav()
函数的末尾,如果您打算获得整个$navArray
的输出。
答案 1 :(得分:0)
我可以看到几个问题。首先,$nav_array
不存在。即使假设它应该是$navArray
,它仍然不存在于函数的范围内。我建议这样的事情:
function get_nav($navArray) {
foreach($navArray as $array) {
...
$getNav = get_nav($navArray);
第二个问题是你只会得到第一个导航项,因为你正在编译并在循环中返回输出。所以你需要将它更新为:
function get_nav($navArray) {
$output = "";
foreach($navArray as $array) {
if ($array["isTrue"] == true) {
$output .= "<li>";
$output .= '<a class="' . $array["class"] . '" href="#' . $array["class"] . '" />';
$output .= $array["title"];
$output .= "</a>";
$output .= "</li>";
}
}
return $output;
}