if/else short

dakata__92

Super Moderator
Здравейте. Принципно знам как се пише съкратено if else със ? : нооо просто ако има две променливи не ми е ясно как ще стане. Ето малко примерен код, който искам да попитам как ще стане на един ред.
PHP:
if($x == $center_x)
{
	$out2 = "<font color='blue'>$i</font>";
	$i++;
}
else
{
	$out2 = "";
}
Принципно мока да го напиша така :
PHP:
$x == $center_x ? $out2 = "<font color='blue'>$i</font>".$i++ : $out2 = "";
Но не ме устройва така. Принципно за разделител се ползват ; а в случая извежда грешка а с . е продължение към стринга, докато ако го оставя с празно разтояние вади пак грешка. Как мога да добавя две променливи на едно условие без да извежда грешката? Съответно мога и така за конкретният случай:
PHP:
$x == $center_x ? $out2 = "<font color='blue'>".$i++."</font>" : $out2 = "";
 
$var = (this == that) ? 'truevalue' : 'falsevalue';

Краткия синтаксис не мисля че е подходящ в случая. Старай се да пишеш качествен код...
 
djman каза:
$var = (this == that) ? 'truevalue' : 'falsevalue';

Краткия синтаксис не мисля че е подходящ в случая. Старай се да пишеш качествен код...
Драснах го чисто формално за теста. Въпроса ми основно е как да добавя две отделни променливи след ? което означава да се изпълнят ако условието е вярно и след това да дойде : (else).
 
Нещо си се объркал... така трябва да стане:

PHP:
$out = ($x === $center_x) ?
             "<font color='blue'>".($i++)."</font>" :
             "";

На няколко реда е, за да се види идеята, можеш да си го съкратиш :)

djman каза:
$var = (this == that) ? 'truevalue' : 'falsevalue';

Краткия синтаксис не мисля че е подходящ в случая. Старай се да пишеш качествен код...
Според мен ако идеята е да си спестиш писане, може и по горния начин.
Но да, ако ще го гледат и други хора кода, ще е по-лесно да се осмисли ако е със стандартното if-else.
 
Ти не разбираш май защо се използва краткия синтаксис. Не е за да използваш 2 променливи. :) За 2 променливи - използвай пълния синтаксис.
 
djman каза:
Ти не разбираш май защо се използва краткия синтаксис. Не е за да използваш 2 променливи. :) За 2 променливи - използвай пълния синтаксис.
Добре разбирам защо и кога се ползва. Питам чисто формално дали е възможно! Анонимен да схванах си грешката.
 
djman каза:
Ти не разбираш май защо се използва краткия синтаксис. Не е за да използваш 2 променливи. :) За 2 променливи - използвай пълния синтаксис.
Но в случая основната променлива е $out. $i e просто "допълнение" към основното. Поне аз така мисля.

Според мен краткият синтаксис е за да дефинираш една променлива. В случая $i вече е дефинирана, нали? => имаме една променлива и тя е $out.
 
anonimen, той иска да променя $i докато го слага на $out. Иначе си прав.


dakata - да, можеш: http://codepad.org/eaQIsFon
 
Вижте принципно ми е известно как и кога се ползва. Интересува ме има ли някакъв разделител след ? за да се поставят още променливи. Дааа знам, че ще кажете използвай си нормалният if/else , но просто от чисто любопитство и в името на по-доброто вникване в програмирането ми е интересно. На този пример как ще се получи? И .$promenliva. означава, че просто добавям променливата, като продължение на друга. ($out = (true) ? 'it is ' . $i++ . ' now' : 'nope';)

Не мога да поставя точка и запетая за да мина на следваща променлива защото е грешно:

$out = (true) ? 'it is ' . $i++ . ' now' ; $ promenliva1 ; $promenliva2 : 'nope';

Мисля, че това което питам и не обяснявам добре, като въпрос е невъзможно поради самата идея на short if else алтернативен синтаксис. :?:
 
Значи ? : е оператор за присвояване (не е, но на практика това се случва - не можеш да присвоиш две стойности на една променлива, затова не можеш и да сложиш две променливи в него :)). В твоя пример ти присвояваш стойност на променливата $out, като същевременно увеличаваш $i с единица.
Погледни този код:

PHP:
$i = 0;
$sth = 'text' . $i++;
echo $i; // 1
echo $sth; // text0

Това всъщност е твоя код, но много съкратен. В случая просто използвам "=", при теб има и " ? : ". Ако схванеш това, ще схванеш и кода, който дадох в предишния пост. Виж и това:

PHP:
$i = 0;
$sth = 'text' . ++$i;
echo $i; // 1
echo $sth; // text 1 - ако това е очаквания резултат, използвай ++$i;

Надявам се това да ти помогне:
http://php.net/manual/en/language.operators.increment.php
 
($a ==$b ) ? { //some code here } : { //else code here } ;


Което е повече от безумица, и бих ти супил ръцете ако го направиш така.
{ //code block }
се нарича код-блок, той обхваща целият код които трябва да се изпълни. при липсвата му, то ще изпълни само първи ред.
И горепосоченият пример, се обезсмиля, защото можеш да махнеш ? и : и да сложиш едно if/else и няма да те е страх, че ще хориш в ада. :)
 
Анонимен, благодаря ти за разяснението наистина го схванах още с първите отговори на всички. Просто в името на любопитството попитах за по-разширено обяснение тъй като на места мисля да използвам съкратения варянт просто защото правя единични проверки и наистина ми изглежда доста по-съкратено от към писане е не е така четливо. Index ам да принципно ако ще ползвам "къдрави скоби" си предпочитам if else :)
 

Back
Горе