Урок 9. PHP — Switch

В предыдущих уроках мы рассмотрели различные элементы, которые позволяют организовать проверку условия в PHP. Тем не менее, бывают случаи, когда оператор IF…Else не самый эффективный способ для проверки определенных условий.

Например, мы могли бы иметь переменную, которая хранит определенное значение, и вы хотите, чтобы выполнялось какое-то действие в зависимости от значения этой переменной. В таком случае вы можете иметь 20 различных вариантов, которые вы должны обработать с безумно длинным блоком If / ElseIf / ElseIf / ElseIf / … и так далее. Да уж, выглядит неважно, давайте посмотрим, можем ли мы сделать что-то другое.

PHP оператор Switch: Быстрая проверка

С помощью оператора Switch вы можете проверить наличие всех этих условий одновременно, и самое замечательное в том, что на самом деле более эффективно в плане программирования. Истинно беспроигрышная ситуация!

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

PHP оператор Switch: Пример

Приведем простой пример использования свитча. В нашем случае в зависимости от пункта назначения, который хранится в переменной, мы будем давать рекомендации что лучше взять с собой в дорогу.


$destination = "Tokyo";
echo "Отправляемся в $destination<br />";
switch ($destination){
	case "Las Vegas":
		echo "Берем с собой $5000! Вегас детка!";
		break;
	case "Amsterdam":
		echo "Парочка газет, фольга...";
		break;	
	case "Egypt":
		echo "50 бутылок солнцезащитного крема.";
		break;	
	case "Tokyo":
		echo "Берем деньги на сувениры.";
		break;
	case "Caribbean Islands":
		echo "Захватите трусы для плавания!";
		break;	
}

Результат:
Отправляемся в Tokyo
Берем деньги на сувениры.

Значение переменной $destination было Токио, поэтому, когда PHP выполнял оператор свитч, то на $destination он сразу сделал поиск для случая со значением «Токио».

Он нашел его и продолжил выполнять код, который был прописан в этом сегменте.

Вы могли заметить, что каждый случай содержит break. Этот break как раз и позволяет во всех остальных случаях ничего не выполнять. Если бы в приведенном выше примере не было брейка, то код бы выполнялся не только в случае значения Токио! Используйте эти знания и никогда не нагромождайте десятки условий там, где можно обойтись одним свитчем!

Форма Switch достаточно уникальна, поэтому потратьте некоторое время на ее рассмотрение, прежде чем двигаться дальше. Примечание: начинающие программисты пренебрегают этой конструкцией, что неправильно и затрудняет чтение кода, а так же негативно сказывается на производительности!

PHP оператор Switch: действие по умолчанию

Возможно, вы заметили отсутствие обработки для случая, когда ни одно из условий не подходит нашей переменной. Если такое случится и свитч не найдет ни одного условия, удовлетворяющего значению переменной, то будет выполнено действие по умолчанию.

Рекомендую всегда использовать такую возможность и добавлять действие по умолчанию, даже если вы уверены, что переменная не примет значения, которого нет в свитче. Ниже приведен вариант нашего примера, в котором добавлена обработка действия по умолчанию.


$destination = "New York";
echo "Отправляемся в $destination<br />";
switch ($destination){
	case "Las Vegas":
		echo "Берем с собой $5000! Вегас детка!";
		break;
	case "Amsterdam":
		echo "Парочка газет, фольга...";
		break;	
	case "Egypt":
		echo "50 бутылок солнцезащитного крема.";
		break;	
	case "Tokyo":
		echo "Берем деньги на сувениры.";
		break;
	case "Caribbean Islands":
		echo "Захватите трусы для плавания!";
		break;	
	default:
		echo "Бельишко чистое не забудьте!";
		break;
}

Результат:
Отправляемся в New York
Бельишко чистое не забудьте!

Готово! Теперь вы умеете обращаться с PHP конструкцией Switch и знаете в каких случаях ее лучше использовать.

← Условный оператор | Содержание | Функции →

Уроки PHP — урок 8-2 — Оператор switch

08/12/2019, by Ivan

В прошлом уроке мы с вами познакомились с оператором if. Оператор if позволяет нам осуществлять проверку истинности условия и в зависимости от результата проверки выполнять нужные нам действия.

<?php
  if($x == 1){
    // действия
  }
  if($x == 2){
    // действия
  }
  if($x == 3){
    // действия 
  }
  if($x == 4){
    // действия 
  }
  if($x == 5){
    // действия 
  }
  if($x == 6){
    // действия 
  }
  if($x == 7){
    // действия 
  }
  if($x == 8){
     // действия
  }
  if($x == 9){
    // действия 
  }
  if($x == 10){
    // действия
  }
?>

Этот способ будет работать, но записывать подобные проверки лучше через оператор SWITCH
PHP switch
Оператор switch позволяет проверить значение выражения при многих условиях.

Давайте переделаем указанный выше пример с использованием switch:

<?php
  switch ($x){
    case 1:
      // действия   
    break;
    case 2:
      // действия       
    break;
    case 3:
      // действия       
    break;
    case 4:
      // действия       
    break;
    case 5:
      // действия       
    break;
    case 6:
      // действия       
    break;
    case 7:
      // действия       
    break;
    case 8:
      // действия       
    break;
    case 9:
      // действия       
    break;
    case 10:
      // действия       
    break;
    default:   
      // действия при условие, что другие условия не подошли
  }
?>

Как я и говорил раньше, оба примера будут работать одинаково, только в случае со switch я добавил default, который будет срабатывать, когда значение $x не будет равняться от 1 до 10.

Давайте разберемся из чего состоит конструкция switch. Первым идет сам оператор switch, за ним в скобочках идет проверяемое выражение. В проверяемом выражение может быть переменная как текстового, так и числового формата, то есть это может быть и число и строка, например:

<?php
  switch ($x){
    case 'Hello':
   
    break;
    case 'Bye':
   
    break;
  }
?>

После записи проверяемого выражения идут фигурные скобки. В фигурных скобках мы записываем возможные значения выражения и действия.

<?php
  switch ($x){
    case 'Hello': //возможное значение
      print $x;   //действия
    break; //конец выполнения switch
    case 2:
      $x++;
    break;
  }
?>

Проверка значения оформляется в виде case, а само возможное значение пишется в кавычках если это строка или просто так если это число. После возможного значения ставится двоеточие.
Дальше мы записываем нужные действия, которые необходимо выполнить при истинности условия. После окончания case и действий, следует ставить break; что означает окончание работы switch.
После всех case можно использовать default, он сработает если другие case не сработали или вы забыли поставить break; и выполнение switch продолжилось. Отсюда два вывода:

1. Не забывайте ставить break; после окончания действий.
2. Оператор break; можно не ставить после действий default, все равно это последний оператор для проверки условия.

Ниже блок схема к оператору switch:

В качестве пояснения скажу, что здесь мы получаем остаток деления от числа D и сколько дней прошло с начала недели, такой сегодня день.

<?php
// $D число дней начиная с понедельника
$x = $D % 7;
switch ($x){
  case 1:
    print 'понедельник';
  break;
  case 2:
    print 'вторник';
  break;
  case 3:
    print 'среда';
  break;
  case 4:
    print 'четверг';
  break;
  case 5:
    print 'пятница';
  break;
  case 6:
    print 'суббота';
  break;
  case 7:
    print 'воскресенье';
  break;
}
?>

Как изменить версию PHP по умолчанию в Ubuntu — TecAdmin

В вашей системе, если вы установили несколько версий PHP, таких как PHP 8.2, PHP 7.4 и PHP 5.6. В настоящее время PHP 7.4 является версией по умолчанию для Apache и интерфейса командной строки (CLI). Возможно, в вашей системе установлены какие-либо другие версии PHP. Только одна версия PHP может быть установлена ​​по умолчанию в любое время.

Это руководство поможет вам изменить версию PHP по умолчанию для CLI и веб-сервера Apache. Этого можно добиться с помощью нескольких наборов команд.

  • Вам может понравиться: Как установить PHP (8. 1, 7.4) на Ubuntu 22.04
  • Переключиться на PHP 8.2

    Перед переключением на PHP 8.2 необходимо деактивировать ранее активированный модуль Apache. Следующие команды деактивируют уже активированный модуль Apache, а затем активируют модуль Apache PHP 8.2. Затем следующие команды установят PHP 8.2 в качестве версии по умолчанию для интерфейса командной строки (CLI).

    • Apache:
       sudo a2dismod php*
        судо a2enmod php8.2 
        sudo systemctl перезапустить apache2 
    • Интерфейс командной строки:
       sudo update-alternatives --set php /usr/bin/php8.2
        sudo update-alternatives --set phar /usr/bin/phar8.2 
        sudo update-alternatives --set phar.phar /usr/bin/phar.phar8.2 
        sudo update-alternatives --set phpize /usr/bin/phpize8.2 
        sudo update-alternatives --set php-config /usr/bin/php-config8. 2  

    Примечание: Команда phpize8.2 и php-config8.2 доступна в пакете

    php8.2-dev . Это более полезно для компиляции модулей PHP с использованием pecl.

    Если вы хотите, чтобы по умолчанию использовалась другая версия (например, PHP 8.1 или PHP 8.0), просто замените 8.2 на требуемую версию.

    Переключиться на PHP 7.4

    Аналогично, если вам нужно настроить PHP 7.4 в качестве версии по умолчанию в вашей системе. Следующий набор команд изменит PHP по умолчанию на 7.4 для веб-сервера Apache и интерфейса командной строки.

    • Apache:
       sudo a2dismod php*
        судо a2enmod php7.4 
        sudo systemctl перезапустить apache2  
    • Интерфейс командной строки:
       sudo update-alternatives --set php /usr/bin/php7.4
        sudo update-alternatives --set phar /usr/bin/phar7. 4 
        sudo update-alternatives --set phar.phar /usr/bin/phar.phar7.4 
        sudo update-alternatives --set phpize /usr/bin/phpize7.4 
        sudo update-alternatives --set php-config /usr/bin/php-config7.4  

    Примечание — Команды phpize7.4 и php-config7.4 доступны в пакете php7.4-dev . Это более полезно для компиляции модулей PHP с использованием pecl.

    Перейти на PHP 5.6

    Версия PHP 5.6 устарела. Поэтому, если у вас есть приложение, для которого требуется PHP 5.6, рассмотрите возможность их обновления до последней версии PHP. Следующий набор команд изменит PHP по умолчанию на 5.6 для веб-сервера Apache и интерфейса командной строки.

    • Apache:
       sudo a2dismod php*
        судо a2enmod php5.6 
        sudo systemctl перезапустить apache2  
    • Интерфейс командной строки:
       sudo update-alternatives --set php /usr/bin/php5. 6
        sudo update-alternatives --set phar /usr/bin/phar5.6 
        sudo update-alternatives --set phar.phar /usr/bin/phar.phar5.6 
        sudo update-alternatives --set phpize /usr/bin/phpize5.6 
        sudo update-alternatives --set php-config /usr/bin/php-config5.6  

    Примечание: Команды phpize5.6 и php-config5.6 доступны в пакете php5.6-dev . Это более полезно для компиляции модулей PHP с использованием pecl.

    Заключение

    Это руководство поможет вам изменить версии PHP по умолчанию в системе Ubuntu. Это поможет вам изменить версию PHP по умолчанию для веб-сервера Apache и интерфейса командной строки.

    PHP PHP 5.6 PHP 7.1 PHP 8.2 PHP7.2

    Доля. Фейсбук Твиттер Пинтерест LinkedIn Тамблер Электронная почта WhatsApp

    macos — Как легко переключаться между версиями PHP на Mac OSX?

    спросил

    Изменено 5 месяцев назад

    Просмотрено 341 тысяч раз

    Часть коллектива PHP

    Я хочу протестировать свое приложение на PHP 5. 3 до PHP 7.0.

    Где и как можно установить версии и как их переключать, запустив небольшой скрипт?

    • PHP
    • Макос
    3

    Если у вас установлены обе версии PHP, вы можете переключаться между версиями с помощью команд link и unlink brew .

    Например, для переключения между PHP 7.4 и PHP 7.3

     варить отвязать [email protected]
    варить ссылку [email protected]
     

    PS: для работы этих команд должны быть установлены обе версии PHP.

    2

    Я нашел это очень хорошее руководство по установке и переключению версий php на OSX.

    Я могу переключить версию как

     $ sphp 7.0 => PHP 7.0
    $ sphp 7.3 => PHP 7.3
    $sphp 7.4 => PHP 7.4
     

    Именно то, что я хочу!

    4

    Пример: Давайте переключимся с php 7.4 на 7.3

     brew unlink [email protected]
    варить установить [email protected]
    варить ссылку [email protected]
     

    Если вы получили Предупреждение: php@7. 3 предназначен только для кег и должен быть связан с --force Затем попробуйте:

     brew link [email protected] --force
     
    2

    Использование

    brew

    Показать текущую версию

     $ php -v
     

    Переход на другую версию
    (например, переход с 5.5.x на версию 7.0.latest):

     $ brew unlink php55
    $ сварить установить php70
     
    1

    Мне понравилась идея переключателя, потому что в данный момент я работаю с другой версией, поэтому вам нужно

     brew install brew-php-switcher
     

    затем версия brew-php-switcher

    например brew-php-switcher 7.4

    2

    Если вы установили php с последней версией в вашей локальной системе и используете доморощенный, то для переключения на более старую версию выполните следующие команды.

    Здесь мы переключаемся на 7. 4

     brew unlink php
    варить установить [email protected]
    варить ссылку [email protected]
     
    1

    я думаю, что версий php для отсоединения и связывания недостаточно, потому что мы часто используем php с apache (httpd), поэтому необходимо обновить httpd.conf после переключения версии php.

    у меня есть сценарий оболочки для отключения/включения php_module автоматически внутри httpd.conf , посмотрите строку 46 на строку 54 https://github.com/dangquangthai/switch-php-version-on-mac-sierra/blob/master/switch-php#L46

    9000 2 Следуйте моим шагам:

    1) Проверьте установленные версии php с помощью brew, наверняка все в порядке

     > brew list | grep php
    #выход
    php56
    php56-международный
    php56-mcrypt
    php71
    php71-международный
    php71-mcrypt
     

    2) Запустить скрипт

     > переключатель-php 71 # или переключатель-php 56
    #выход
    Версия PHP [71] найдена
    Переключение с [php56] на [php71]...
    Отключить php56 ... [OK] и связать php71 . .. [OK]
    Обновление конфигурации Apache2.4 /usr/local/etc/httpd/httpd.conf ... [OK]
    Перезапуск Apache2.4... [ОК]
    PHP 7.1.11 (cli) (построено: 3 ноября 2017 г., 08:48:02) (NTS)
    Copyright (c) 1997-2017 The PHP Group
    Zend Engine v3.1.0, Copyright (c) Zend Technologies, 1998–2017 гг.
     

    3) Наконец, когда вы получили вышеуказанное сообщение, проверьте httpd.conf на моем ноутбуке:

     vi /usr/local/etc/httpd/httpd.conf
     

    Вы можете увидеть рядом строки LoadModule

     LoadModule php7_module /usr/local/Cellar/php71/7.1.11_22/libexec/apache2/libphp7.so
    #LoadModule php5_module /usr/local/Cellar/php56/5.6.32_8/libexec/apache2/libphp5.so
     

    4) откройте httpd://localhost/info.php

    Надеюсь, это будет полезно

    0

    Если вы устанавливаете PHP с homebrew , вы можете очень легко переключаться между версиями. Скажи, что хочешь php56 , чтобы указать на версию 5.6.17, просто выполните:

     brew switch php56 5. 6.17
     
    1

    Как:

    • Найти установленные версии PHP
    • Переключение с пакета PHP по умолчанию на версионный пакет
     % варить поиск php
    brew-php-switcher php-cs-fixer [email protected] phplint phpstan pup
    php ✔ php-cs-fixer@2 [email protected] ✔ phpmd phpunit
    php-code-sniffer [email protected] phpbrew phpmyadmin pcp
    % варить отвязать php
    % варить ссылку [email protected]
     

    удалить всю строку с «php» в: nano ~/.zshrc

    после этого заработает: brew unlink [email protected] && brew link [email protected]

     brew link --overwrite [email protected]
     

    У меня отлично работает 🙂

    1

    , если вы используете homebrew , это позволяет установить несколько версий формулы. следовательно,

    1. brew unlink используется для отключения версии формулы от использования.
    2. Ссылка на заваривание используется для прикрепления версии формулы к использованию.
    3. Например,

    , если у вас установлены php 7. 4 и 8.0 и вы хотите переключаться между ними, предполагая, что вы в настоящее время используете 7.4, это можно сделать так: 8

    Я предпочитаю использовать phpbrew, который можно легко установить ( $ phpbrew install 8.1.3 + default ) и переключить ( phpbrew switch 8.1.3 ) используемая версия php.

    https://github.com/phpbrew/phpbrew

    Старый вопрос, но по-прежнему трудно найти быстрый способ переключения между версиями php в 2022 году. Я использую камердинера Laravel, а для переключения версий PHP требуется переустановка камердинера для работы. У меня в основном есть две пользовательские функции, определенные в моем файле .zhsrc, но я думаю, что это будет работать и для bash:

    переключательphp7 () {
        служебная остановка
        сварить отвязать [email protected]
        службы варки останавливаются [email protected]
        ссылка для варки --force --overwrite [email protected]
        сервисы варки запускаются [email protected]
        глобальное обновление композитора
        rm -f ~/.config/valet/valet. sock
        камердинер установить
        камердинер начать
    }
    переключательphp8 () {
        служебная остановка
        сварить отвязать [email protected]
        службы варки останавливаются [email protected]
        ссылка для варки --force --overwrite [email protected]
        сервисы варки запускаются [email protected]
        глобальное обновление композитора
        rm -f ~/.config/valet/valet.sock
        камердинер установить
        камердинер начать
    }
     

    А потом просто запустите их в командной строке:

     switchphp8
     

    Это работает надежно для меня, однако, если вы используете виртуальные SSL-сертификаты Valets, командная строка будет запрашивать пароль учетной записи администратора для каждого связанного вами ssl-сертификата, что потенциально раздражает, если у вас их много. Это не ошибка, если он продолжает спрашивать, в конце концов вы разрешите все, если будете продолжать вводить пароль / использовать сенсорный идентификатор.

    1

    Не забудьте изменить PATH среды с помощью этой команды:

     echo 'export PATH="/usr/local/opt/php@8. 1/bin:$PATH"' >> ~/.bash_profile
    источник ~/.bash_profile
     

    Поскольку OP специально попросил перейти с «PHP 5.3 на PHP 7.0», многие из них устарели и / или удалены в brew из-за прекращения их официальной поддержки — с декабря 2022 года.0018 , не получится (Вопрос и ответ здесь). Вам нужно будет использовать кран shivammathur/php (хвала разработчикам, ответственным за это), который можно использовать для установки неподдерживаемых версий PHP.

     brew tap shivammathur/php // нужно сделать только один раз
    brew install shivammathur/php/[email protected]//или brew install [email protected] в зависимости от вашего выбора
    brew search php //необязательно, показывает все доступные версии, если вам нужна другая версия
    варить ссылку [email protected]
     

    Отныне переключение простое:

     варить отвязать [email protected]
    brew link [email protected] //OP запросил 5.3, но 5.6 — самая низкая версия, поддерживаемая краном
     

    Все версии <= [email protected] объявлены устаревшими и удалены из brew, так как срок их службы истек. По состоянию на декабрь 2022 года официально поддерживаются только версии 8.0 и 8.1, которые поддерживает brew.

    Это тоже в конечном итоге устареет, поскольку больше версий достигнет EOL, но шаги должны оставаться теми же, пока этот ответвитель находится в разработке.

    Ссылка, предоставленная ответом Ксавера, послужила хорошим дальнейшим чтением.

    Если вам не нужно играть с apache, то есть очень простой способ с одной функцией, просто добавьте ее в ваш ~/.bash_profile или ~/.zshrc (зависит от вашего терминала)

     function php-toggle() {
      currentVersion=$(php -v | tail -r | tail -n 1 | cut -d " " -f 2 | cut -c 1-3)
      switchTo='7.4'
      [[ $currentVersion == '7.4' ]] && switchTo='8.1'
      сварить отвязать php@"$currentVersion"
      службы варки останавливаются php@"$currentVersion"
      варить ссылку php@"$switchTo"
      сервисы варки запускаются php@"$switchTo"
      exportString="export PATH=\"/opt/homebrew/opt/php@${switchTo}/bin:\$PATH\""
      эхо $exportString > ~/.php_version
      источник ~/. php_version
    }
    источник ~/.php_version
     

    Откройте новый терминал и запустите php-toggle .

    1

    Моей целью было установить старый патч [email protected] на MacOS, и я сделал это следующим образом:

    Я нашел версию brew, которая содержит старый патч php, который мне нужен, и сбросил git на них

    репозиторий: https://github.com/Homebrew/homebrew-core/commit/3b342c146da0452d 71d982324977567960da2979

     git -C $(brew --repo)/Library/Taps/homebrew/homebrew-core reset --hard 3b09794
    варить переустановить [email protected]
     
    1

    • Сначала установите или переустановите нужную версию

      варить переустановить [email protected]

    • Во-вторых, вам нужно перейти на нужную версию

      эхо ‘экспорт PATH=»/usr/local/opt/[email protected]/bin:$PATH»‘ >> ~/.zshrc echo ‘export PATH=»/usr/local/opt/[email protected]/sbin:$PATH»‘ >> ~/.zshrc

    • Затем вам нужно добавить свой PATH, выполнив команду ниже

      brew-php-switcher 7.