Вопрос по синтаксису.

proWoke

Новичок
Вот сейчас перечитываю главу из книги Котерова про организацию библиотек. И вот такой кусочек кода есть:
PHP:
$sep = getenv("COMSPEC")? ";" : ":";
ini_set("include_path", ini_get("include_path").$sep.getenv("DOCUMENT_ROOT")."/lib");
Я понимаю что он делает. Но вот строчку $sep = getenv("COMSPEC")? ";" : ":"; я понимаю лишь интуитивно.
Что значит
PHP:
     ? ";" : ":";
 

Духовность™

Продвинутый новичок
а с 5.3 можно писать и так:

PHP:
$var = 'Я мега програмер';

echo $var ?: 'Я мега ламер';
я понимаю лишь интуитивно
Блин, ДА ЧТО СЛОЖНОГО открыть мануал и посмотреть? Там же ВСЕ есть. Не знаешь английского - учись по старой версии русского мануала.
 

craz

Нестандартное звание
Вот сейчас перечитываю главу из книги Котерова про организацию библиотек. И вот такой кусочек кода есть:
PHP:
$sep = getenv("COMSPEC")? ";" : ":";
ini_set("include_path", ini_get("include_path").$sep.getenv("DOCUMENT_ROOT")."/lib");
Я понимаю что он делает. Но вот строчку $sep = getenv("COMSPEC")? ";" : ":"; я понимаю лишь интуитивно.
Что значит
PHP:
     ? ";" : ":";
а с 5.3 можно писать и так:

PHP:
$var = 'Я мега програмер';

echo $var ?: 'Я мега ламер';
Блин, ДА ЧТО СЛОЖНОГО открыть мануал и посмотреть? Там же ВСЕ есть. Не знаешь английского - учись по старой версии русского мануала.
вообще то не стоит так кричать, тернарный оператор - это достаточно спорная конструкция с точки зрения понимания, и я так думаю автор не понял не того что делает конструкция, а зачем $sep меняется с : на ;

По сути данный код вообще спорный...
$sep надо было бы написать $separator, ну и вообще.
 

Dovg

Продвинутый новичок
>По сути данный код вообще спорный...
:)
Для этих целей придумали константу PATH_SEPARATOR.
 

Духовность™

Продвинутый новичок
вообще то не стоит так кричать, тернарный оператор - это достаточно спорная конструкция с точки зрения понимания
Ололо. С точки зрения понимания тут вообще ничего сложного нет, это сокращенный IF. Надо просто базовый синтаксис знать, как PHP интерпретирует типы в boolean.
 

craz

Нестандартное звание
Ололо. С точки зрения понимания тут вообще ничего сложного нет, это сокращенный IF. Надо просто базовый синтаксис знать, как PHP интерпретирует типы в boolean.
ололо Триум
PHP:
$var = 'Я мега програмер';
детский сад
 

tz-lom

Продвинутый новичок
ололо , зря наезжаете,в тернарном операторе нет ничего сложного,но если не знать что он есть и как называется отгуглить знак вопроса - задача нетривиальная
маны все тоже сразу не осилишь - букв много,поиск не вырулит
ИЧСХ дали ТС название,и сразу всё понял

P.S.
PHP:
php > echo $vard?: 'Я мега ламер'; 
PHP Notice:  Undefined variable: vard in php shell code on line 1
Я мега ламер
ну вы понели
 

tranquillity

Новичок
proWoke
PHP:
<?php

$var = false;
if( ! $var ){
    $to_print = 'var is false';
}else{
    $to_print = 'var is true or other';
}
print $to_print;

?>
альтернатива
PHP:
<?php
$var = false;
print $var ? 'var is false' : 'var is true or other';
?>
 

Духовность™

Продвинутый новичок
ололо , зря наезжаете,в тернарном операторе нет ничего сложного,но если не знать что он есть и как называется отгуглить знак вопроса - задача нетривиальная
маны все тоже сразу не осилишь - букв много,поиск не вырулит
ИЧСХ дали ТС название,и сразу всё понял

P.S.
PHP:
php > echo $vard?: 'Я мега ламер'; 
PHP Notice:  Undefined variable: vard in php shell code on line 1
Я мега ламер
ну вы понели
Не поняли. Это наезд такой на удобную конструкцию?

- аналогично
 

tz-lom

Продвинутый новичок
удобная конструкция к сожалению
PHP:
empty($vard)?'placeholder':$vard
не заменяет
 
Сверху