获取多维数组php的一部分

时间:2014-04-15 02:51:48

标签: php arrays multidimensional-array

我下面有一个多维数组。我试图根据传递给函数的值获取数组的某些部分。但由于某些原因,即使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
        )

)

3 个答案:

答案 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;
}