php - пропустить foreach, если результат в том же значении

0

Я работаю с моим простым проектом, который получает имя переменной из другого php файла. Некоторые переменные имеют одинаковое значение.

Я использовал foreach для отображения переменных в разных php файлах в определенном каталоге.

(1st app_config.php)  $app_name = "Pass Generator";
(2nd app_config.php)  $app_name = "Random Name Generator";
(3rd app_config.php)  $app_name = "Love Meter";
(4th app_config.php)  $app_name = "Random Name Generator";
(5th app_config.php)  $app_name = "Lucky Number Generator";

Поскольку моя вторая и четвертая переменные $ app_name имеют одинаковое значение, как я могу пропустить один из них. Таким образом, выход будет:

Pass Generator
Random Name Generator
Love Meter
Lucky Number Generator

Это мой код:

$path = '../../apps/' . $name[0];
$results = scandir($path);

foreach ($results as $result) {
    if ($result === '.' or $result === '..') continue;

    if (is_dir($path . '/' . $result)) {
        require_once("../../apps/".$result."/app_config.php");
        $app .= $app_name."<Br>";
    }
}
echo $app_name;

Кто угодно? благодаря

Теги:

2 ответа

1

В качестве альтернативы вы можете собрать их внутри массива, затем вставить/склеить их с помощью linebreak:

$path = '../../apps/' . $name[0];
$results = scandir($path);

$apps = array();
foreach ($results as $result) {
    if ($result === '.' or $result === '..') continue;

    if (is_dir($path . '/' . $result)) {
        require_once("../../apps/".$result."/app_config.php");
        $apps[$app_name] = null;
    }
}

echo implode('<br/>', array_keys($apps));

Или другой вариант:

    if (is_dir($path . '/' . $result)) {
        require_once("../../apps/".$result."/app_config.php");
        $apps[] = $app_name;
    }
}

echo implode('<br/>', array_unique($apps));
  • 0
    <br> не <br/> :-)
  • 1
    @Sebas будет работать как с автоматическим закрытием, так и без него. я просто привык к этому :)
Показать ещё 2 комментария
1
$path = '../../apps/' . $name[0];
$results = scandir($path);

$arrProcessed = array();
foreach ($results as $result) {
    if ($result === '.' or $result === '..' or array_key_exists($result, $arrProcessed)) continue;
    $arrProcessed[$result] = true;

    if (is_dir($path . '/' . $result)) {
        require_once("../../apps/".$result."/app_config.php");
        $app .= $app_name."<Br>";
    }
}
echo $app_name;
  • 1
    Возможно, вы захотите использовать isset вместо этого. См. Stackoverflow.com/a/9522522/627473
  • 0
    Отображается только один элемент / элемент. : /

Ещё вопросы

Сообщество Overcoder
Наверх
Меню