我正在尝试编写一个PHP Breadcrumb函数,该函数使用PHP的$ _SERVER [“REQUEST_URI”]函数来访问包含URI的数组。
我目前很难编写函数来循环遍历数组以构建最终产品,这就是它自己的正面格式。
因此,如果我们对函数进行以下调用:
createBreadcrumb( “manage_account.php”);
这是函数以及URI作为参数,这是函数应该用来构建面包屑的。
因此,如果参数是manage_account.php,则应访问第一个数组,即$ breadcrumbArray [0] [1] [0];,后续的$ breadcrumbArray [0] [1] [1]与$ breadcrumbArray [1] [1];这是URI的人类可读版本。 $ breadcrumbArray [2] [1]是人类可读版本的路径。
我的数组如下:
$this->breadcrumbArray[0] = array(
array("index.php", 1),
array("manage_account.php", 1, 2),
array("manage_users.php", 1, 3),
array("view_users.php", 1, 4),
array("new_user.php", 1, 5),
array("edit_user.php", 1, 6),
array("view_user.php", 1, 7),
array("new_module.php", 1, 8),
array("edit_module.php", 1, 9),
array("view_module.php", 1, 10),
array("new_handbook.php", 1, 11),
array("edit_handbook.php", 1, 12),
array("view_handbook", 1, 13)
);
$this->breadcrumbArray[1] = array(
"1" => "Home",
"2" => "Manage Account",
"3" => "Manage Users",
"4" => "View Users",
"5" => "New Users",
"6" => "Edit Users",
"7" => "View User",
"8" => "New Module",
"9" => "Edit Module",
"10" => "View Module",
"11" => "New Handbook",
"12" => "Edit Handbook",
"13" => "View Handbook"
);
$this->breadcrumbArray[2] = array(
"1" => "index.php",
"2" => "manage_account.php",
"3" => "manage_users.php",
"4" => "view_users.php",
"5" => "new_user.php",
"6" => "edit_user.php",
"7" => "view_user.php",
"8" => "new_module.php",
"9" => "edit_module.php",
"10" => "view_module.php",
"11" => "new_handbook.php",
"12" => "edit_handbook.php",
"13" => "view_handbook.php"
);
我已经编写了以下代码,但是我收到了一个我不理解的错误。
错误:
PHP Notice: Undefined variable: breadcrumbArray in *** on line 90
PHP Fatal error: Cannot access empty property in *** on line 90
代码:
public function createBreadcrumb($url) {
echo $this->breadcrumbArray[0][0][0];
$retval;
for($i = 0; $i < 100; $i++) {
echo $this->breadcrumbArray[0][0][0];
if($this->$breadcrumbArray[0][$i][0] = $url) {
echo $this->$breadcrumbArray[0][$i][0].'<br/>';
for($x = 1; $x < 100; $x++) {
echo '<a href="'.$this->$breadcrumbArray[2][$x].'">'.$this->$breadcrumbArray[1][$i].'</a>';
}
}
}
}
上述错误是由于未正确访问数组引起的,
这是$ this-&gt; $ breadcrumbArray
应该是$ this-&gt; breadcrumbArray
public function createBreadcrumb($url) {
for($i = 0; $i < (count($this->breadcrumbArray[0]) - 1); $i++) {
if($this->breadcrumbArray[0][$i][0] == $url) {
for($x = 1; $x < count($this->breadcrumbArray[0][$i]); $x++) {
if((count($this->breadcrumbArray[0][$i]) - 1) == $x) {
echo $this->breadcrumbArray[1][$this->breadcrumbArray[0][$i][$x]];
} else {
echo '<a href="'.$this->breadcrumbArray[2][$this->breadcrumbArray[0][$i][$x]].'">'.$this->breadcrumbArray[1][$this->breadcrumbArray[0][$i][$x]].'</a> > ';
}
}
}
}
}
上面的代码远非我写过的最优雅的东西,但它确实提供了一个更好的想法,因为它确实实现了功能。任何进一步的建议当然仍然非常受欢迎。
非常感谢任何帮助,谢谢! :d
答案 0 :(得分:0)
你的问题完全不清楚。我想你正试图这样做 -
foreach($this->breadcumbArray[0] as $val){
$val[2]= isset($val[2])? $val[2] : $val[1] ;
$output[] = '<a href="'.$val[0].'">'.$this->breadcumbArray[$val[1]][$val[2]].'</a>';
}
编辑:你自己解决了问题:Y ...
这个for($i = 0; $i < (count($this->breadcrumbArray[0]) - 1); $i++)
应为for($i = 0; $i < count($this->breadcrumbArray[0]); $i++)
,如果写if(isset($this->breadcrumbArray[0][$i][0]) && $this->breadcrumbArray[0][$i][0] == $url)
答案 1 :(得分:0)
更新:
更重要:
$this->$breadcrumbArray[0][$i][0]
您需要将其更改为
$this->breadcrumbArray[0][$i][0]
并在使用之前定义$url
。
此外,您还要检查$myarray->breadcrumbArray[0][$i][0])
是否存在,并在不存在时跳出循环。