0 レビュー
3 回答
多次元配列phpのセクションを取得する
以下に多次元配列があります。そして、関数に渡された値に基づいて配列の特定の部分を取得しようとしています。ただし、何らかの理由で、 path
が一致していても、falseを返しますが、if/test<を返すだけです。 / code>は使用されますが、ifと入力すると
/hello
if
が失敗し、{-が返されます。 code-5}
。
配列は次のとおりです:
配列
((
[0]=>配列
((
[名前]=>test_route
[path] => /test
[コントローラー]=>TestController
[アクション]=>indexAction
)。
[1]=>配列
((
[名前]=>hello_route
[path] => /hello
[コントローラー]=>HelloController
[アクション]=>helloAction
)。
)。
そしてここに方法があります:
public function getRoute($ path = ""、$ name = "")
{{
foreach($ this-> routers as $ key => $ val)
{{
if($ val ['path'] === $ path || $ val ['name'] === $ name)
{{
$ this-> routers[$key]を返します;
}
そうしないと
{{
falseを返す;
}
}
}
わからない
0
レビュー
答え :
解決策:
提供したコードを変更するだけで、次のようなものを試す必要があるかもしれません:
public function getRoute($path = "", $name = "")
{
foreach($this->routes as $key => $val)
{
if($val['path'] === $path || $val['name'] === $name)
{
return $this->routes[$key];
}
}
return false;
}
わからない
0
レビュー
答え :
解決策:
最初の要素を調べた後、メソッドが存在します。 elseブロックを削除し、returnfalseをループの外に置きます。
foreach($this->routes as $key => $val)
{
if($val['path'] === $path || $val['name'] === $name)
{
return $this->routes[$key];
}
}
return false;
わからない
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;
}
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。