Я пытаюсь использовать условие php внутри цикла foreach, но у меня возникают некоторые трудности. Я просмотрел другие темы, связанные с этим, но не смог найти решение/объяснение для применения в моем коде. Вот оно:Если условие внутри цикла foreach (функция scanDirectory)
<?php
$directory = $_SESSION['cwd']; // current directory
$user = $_SESSION['simple_auth']['username']; // get username
$repository = gatorconf::get('repository'); // get base repertory of the file manager
$userdir = $repository.DS.'user'.DS.$user; // user's repertory
function scanDirectory($userdir = ''){
$folders = glob($userdir . '/*' , GLOB_ONLYDIR);
foreach($folders as $folder){
echo "$folder<br />"; // line where i tried different things for my condition
scanDirectory($folder);
}
}
scanDirectory($userdir);
?>
Я пытаюсь заменить строку echo "$folder<br />";
условием, так что вместо того, чтобы быть echo'd переменная $ папка будет сравниваться с другой переменной, прежде чем вернуться в петлю, как это :
if ($folder == $directory) {
echo "you have permissions on this folder";
}
в основном цель моего кода сравнить конкретные реперториума с репертуаром пользователь в настоящее время в, и если есть совпадение, то будет отображаться некоторый HTML, но я думаю, что я не имею правильный подход.
Любые предложения приветствуются!
Спасибо за помощь
Большое спасибо, что работает! Не возражаете ли вы объяснить, что на самом деле происходит, когда вы добавляете параметр? Почему функция просто не сравнивает $ folder с $ directory только с условием If? – apatik
Это связано с тем, что называется [scope] (https://en.wikipedia.org/wiki/Scope_ (computer_science)) ([Область переменной PHP] (http://php.net/manual/en/language. variables.scope.php)). Если определена ваша переменная '$ directory', это не та область, где у вас есть это условие if. Вы делаете эту переменную часть этой области, передавая ее как параметр. – bmla
aaah Я понял! Я считаю, что это та же самая причина, по которой я не мог печатать/эхо-массив, определенный внутри 'function scanDirectory' вне этой функции? Еще раз спасибо за вашу помощь – apatik