親子要素の配列からパスを作成しようとしています。なぜ私は非匿名関数で 'use'を使用できないのですか?
アイデアは、パスに含まれるすべての要素を順番に並べ替える再帰関数を作成することでした。
私の問題は、PHPで閉鎖している:
動作するように私の再帰関数を取得するには、私はグローバルスコープで複数の変数を定義する必要がありました。私はこのようにグローバル変数の代わりに「使用」キーワードを使用してみました
global $breadcrumbs;
$breadcrumbs = array();
function buildBreadcrumbs($elements, $parentID){
global $siteroot;
global $breadcrumbs;
global $navigation;
if($siteroot['id'] === $parentID){
$nav = array_values($navigation);
array_unshift($breadcrumbs, array('label' => 'Start', 'id' => $nav[0]['id']));
} else {
foreach ($elements as $element) {
if ($element['id'] === $parentID) {
array_unshift($breadcrumbs, array('label' => $element['navlabel'], 'id' => $element['id']));
buildBreadcrumbs($elements, $element['parent'][0]);
}
}
}
}
:
これは次のように、それがどのように見えるかです
function buildBreadcrumbs($elements, $parentID) use($siteroot, $breadcrumbs, $navigation){
if($siteroot['id'] === $parentID){
$nav = array_values($navigation);
array_unshift($breadcrumbs, array('label' => 'Start', 'id' => $nav[0]['id']));
} else {
foreach ($elements as $element) {
if ($element['id'] === $parentID) {
array_unshift($breadcrumbs, array('label' => $element['navlabel'], 'id' => $element['id']));
buildBreadcrumbs($elements, $element['parent'][0]);
}
}
}
}
しかし、これは私に構文エラーが得られます。
をPHP Parse error: syntax error, unexpected T_USE, expecting '{'
私はここで間違っていますか?
$breadcrumbs
はなぜ機能が使用できるように最初にグローバルにする必要がありますか?
機能自体にローカルであるあなたがそれにパラメータを追加することを選択しない限り、それは、それ以外の変数にアクセスすることはできません。そのため、$ breadcrumbsにアクセスすることができません - 範囲外ですので – ThisGuyHasTwoThumbs
なぜvarsを関数に渡していませんか? – AbraCadaver