1 Востаннє редагувалося quez (13.03.2015 11:12:06)

Тема: Як ви з цим живете?

$arg = 'T';
$vehicle = ( ( $arg == 'B' ) ? 'bus' :
             ( $arg == 'A' ) ? 'airplane' :
             ( $arg == 'T' ) ? 'train' :
             ( $arg == 'C' ) ? 'car' :
             ( $arg == 'H' ) ? 'horse' :
             'feet' ); //horse
echo $vehicle;
Подякували: leofun01, 221VOLT2

2 Востаннє редагувалося koala (13.03.2015 11:20:41)

Re: Як ви з цим живете?

Я і не живу...

$vehicles = array( 'B' => 'bus', 
                   'A' => 'airplane',
                   'T' => 'train',
                   'C' => 'car',
                   'H' => 'horse' );
$arg = 'T';
echo $vehicles[ $arg ];
Подякували: ktretyak, Logans, funivan, flatliner, leofun01, 221VOLT6

3

Re: Як ви з цим живете?

koala написав:

Я і не живу...

$vehicles = array( 'B' => 'bus', 
                   'A' => 'airplane',
                   'T' => 'train',
                   'C' => 'car',
                   'H' => 'horse' );
$arg = 'T';
echo $vehicles[ $arg ];

Акуратно об'їдаєте колючки?

Подякували: 0xDADA11C7, 221VOLT2

4

Re: Як ви з цим живете?

Можете записати цей код на C++ простіше?

Подякували: leofun011

5

Re: Як ви з цим живете?

koala написав:

Я і не живу...

$vehicles = array( 'B' => 'bus', 
                   'A' => 'airplane',
                   'T' => 'train',
                   'C' => 'car',
                   'H' => 'horse' );
$arg = 'T';
echo $vehicles[ $arg ];

А якщо $arg = 'Щ'?

Подякували: 221VOLT1

6

Re: Як ви з цим живете?

koala написав:

Можете записати цей код на C++ простіше?

Ваш код чи мій?

7

Re: Як ви з цим живете?

Код, який робить те саме.

8 Востаннє редагувалося koala (13.03.2015 11:52:37)

Re: Як ви з цим живете?

quez написав:
koala написав:

Я і не живу...

$vehicles = array( 'B' => 'bus', 
                   'A' => 'airplane',
                   'T' => 'train',
                   'C' => 'car',
                   'H' => 'horse' );
$arg = 'T';
echo $vehicles[ $arg ];

А якщо $arg = 'Щ'?

А, вибачте. $vehicle = $vehicles[ $arg ] ?: 'feet'; - так легше?

Подякували: leofun011

9 Востаннє редагувалося quez (13.03.2015 11:58:55)

Re: Як ви з цим живете?

koala написав:

Код, який робить те саме.

Знову ж таки, ваш чи мій? Тому що вони роблять різні речі.
Якщо я вас правильно розумію, то

char arg = 'T';
const char* vehicle = ( ( arg == 'B' ) ? "bus" :
( arg == 'A' ) ? "airplane" :
( arg == 'T' ) ? "train" :
( arg == 'C' ) ? "car" :
( arg == 'H' ) ? "horse" :
"feet" );
cout << vehicle;

10

Re: Як ви з цим живете?

Ну і як ви з таким кодом живете?

Подякували: leofun011

11

Re: Як ви з цим живете?

koala написав:

Я і не живу...

$vehicles = array( 'B' => 'bus', 
                   'A' => 'airplane',
                   'T' => 'train',
                   'C' => 'car',
                   'H' => 'horse' );
$arg = 'T';
echo $vehicles[ $arg ];

А з PHP 5.4 можна ще так

$arg = 'T';

echo ['B' => 'bus', 
        'A' => 'airplane',
        'T' => 'train',
        'C' => 'car',
        'H' => 'horse'][$arg];

12

Re: Як ви з цим живете?

koala, він про тернарний оператор в PHP, а не про заплутаність коду.

Подякували: koala1

13

Re: Як ви з цим живете?

А... Як на мене, взагалі Вієт погану річ зробив. Краще б ПОЛІЗ придумав. Чи Лісп. А так всі жеремо кактуси.

14 Востаннє редагувалося P.Y. (13.03.2015 13:59:25)

Re: Як ви з цим живете?

[code=php]
<?
$arg = 'T';
$vehicle = ( ( $arg == 'B' ) ? 'bus' :
             (( $arg == 'A' ) ? 'airplane' :
             (( $arg == 'T' ) ? 'train' :
             (( $arg == 'C' ) ? 'car' :
             (( $arg == 'H' ) ? 'horse' :
             'feet' ))))); //train
echo $vehicle;
?>
[/code]
Секрет фокусу — в порядку виконання операцій.
Без зайвих дужок це працює як

$arg = 'T';
$vehicle = (((((( $arg == 'B' ) ? 'bus' :
             ( $arg == 'A' )) ? 'airplane' :
             ( $arg == 'T' )) ? 'train' :
             ( $arg == 'C' )) ? 'car' :
             ( $arg == 'H' )) ? 'horse' :
             'feet' ); //horse
echo $vehicle;

Будь-яке співпадіння значень дає істину в наступній умові, та — в наступній, і т.д., тому результатом може бути або 'horse', або 'feet'.

P.S. Наведений вище код на С++ дає правильний результат і без додаткових дужок.

Подякували: leofun01, flatliner, 221VOLT3

15

Re: Як ви з цим живете?

koala написав:

Ну і як ви з таким кодом живете?

Достатньо двох тернарних операторів, щоб добитись такої поведінки, а писати їх чи if .. elseif .. else - це тільки питання смаку, аргумент про заплутаність не проходить.

Подякували: 221VOLT1

16

Re: Як ви з цим живете?

Ну а що? Людина хоче заробляти гроші програмуючи сайти і перше що вона бачить це PHP. Та й "всі на PHP і я на PHP". Від нього нікуди не втечеш. Треба щоб якийсь google почав піарити якусь іншу мову програмування або щось таке.

Подякували: 221VOLT1

17

Re: Як ви з цим живете?

Ну а що? Людина хоче заробляти гроші програмуючи сайти і перше що вона бачить це PHP. Та й "всі на PHP і я на PHP". Від нього нікуди не втечеш. Треба щоб якийсь google почав піарити якусь іншу мову програмування або щось таке.

чую скоро буде срач наскільки PHP галімий і наскільки він кривий

На рахунок коду я скажу що роблю я:
Я переписую код на такий який вважаю нормальний!

Подякували: 221VOLT1

18 Востаннє редагувалося ktretyak (13.03.2015 15:42:52)

Re: Як ви з цим живете?

Наведений приклад в заголовку теми, звичайно ж, краще писати так, і я тут проблеми не бачу.

Мене у PHP більше дивує синтаксис мовної конструкції switch:

<?php
switch ($i) {
    case "apple":
        echo "i is apple";
        break;
    case "bar":
        echo "i is bar";
        break;
    case "cake":
        echo "i is cake";
        break;
}
?>

Можливо я просто не використовуючи її не знаю для чого взагалі потрібен той break;, але бачу, що можна було б придумати щось типу case в SQL:

case $i
    when "apple" echo "i is apple"
    when "bar" echo "i is bar"
    when "cake" echo "i is cake"
end
Подякували: quez, 221VOLT2

19 Востаннє редагувалося VTrim (13.03.2015 15:56:15)

Re: Як ви з цим живете?

Чому? Я якось використовував світч до прикладу так..
Досить зручно..
Для ?module=module1 і т.д наприклад

$module = $_GET['module'] ? $_GET['module'] : null;

switch ($module) {


    default:

       echo 'Модуль не знайдений';

        break;


    case module1:

        echo module1;

        break;

    case module2:

        echo module2;

        break;

    case module3:

        echo module3;

        break;
}
Подякували: 221VOLT1

20 Востаннє редагувалося ktretyak (13.03.2015 15:59:27)

Re: Як ви з цим живете?

Кхм...

Задався питанням і знайшов відповідь:

<?php
switch($beer)
{
    case 'tuborg';
    case 'carlsberg';
    case 'heineken';
        echo 'Good choice';
    break;
    default;
        echo 'Please make a new selection...';
    break;
}
?>

Тобто break'и виконують роль дужок для випадків АБО, АБО...
Але ж і це можна було зробити так:

case $beer;
  when 'carlsberg'; or 'heineken'; echo 'Good choice';
  else echo 'Please make a new selection...';
end
Подякували: 221VOLT1