我下面有一个多维数组。我试图根据传递给函数的值获取数组的某些部分。但由于某些原因,即使path
匹配,它也会返回false,但只有在使用/test
时才会返回,但如果我键入/hello
if
失败,则返回{{ 1}}。
这是数组:
false
以下是方法:
Array
(
[0] => Array
(
[name] => test_route
[path] => /test
[controller] => TestController
[action] => indexAction
)
[1] => Array
(
[name] => hello_route
[path] => /hello
[controller] => HelloController
[action] => helloAction
)
)
答案 0 :(得分:2)
只需修改您提供的代码,您可能会尝试这样的事情:
public function getRoute($path = "", $name = "")
{
foreach($this->routes as $key => $val)
{
if($val['path'] === $path || $val['name'] === $name)
{
return $this->routes[$key];
}
}
return false;
}
答案 1 :(得分:0)
检查第一个元素后,您的方法就存在了。删除else块并将返回false置于循环外部。
foreach($this->routes as $key => $val)
{
if($val['path'] === $path || $val['name'] === $name)
{
return $this->routes[$key];
}
}
return false;
答案 2 :(得分:0)
我不确定/test
为何有效。你正在处理一个多维数组。 foreach不进行深度搜索。您将不得不修改您的代码:
public function getRoute($path = "", $name = "")
{
foreach($this->routes as $route) {
foreach($route as $key => $val)
{
if($val['path'] === $path || $val['name'] === $name)
{
return $route[$key];
}
}
}
return false;
}