As an added note to the guy below, in such a case, use the !== operator like this.
$nkey = array_search($needle, $haystack);
if ($nkey !== false) { ...
The !== and the === compare the "types". So, with this type of comparision, 0 is not the same as the FALSE returned by the array_search array when it can not find a match. :)
Quoted Text:
===================================
Be careful with stuff like
if ($nkey = array_search($needle, $haystack)) { ...
if the returned key is actually the key 0, then the if won't be executed
===================================
if
if oluşumu, PHP dahil olmak üzere birçok programlama dilindeki en önemli yapı taşlarından biri olup kod bölümlerinin koşullu olarak çalıştırılabilmelerini sağlar. PHP, C dilindekine benzer bir if yapısı sunar:
if (ifade)
deyim
İfadelerle ilgili bölümde de anlatıldığı gibi, ifade kendi mantıksal değeri üzerinden değerlendirilir. ifade'nin sonucu TRUE ise, PHP deyim'i çalıştırır, FALSE ise gözardı eder. Hangi değerlerin FALSE olarak değerlendirildiği hakkında daha fazla bilgiyi boolean türüne dönüşüm bölümünde bulabilirsiniz.
Aşağıdaki örnek, $a değeri $b
değerinden büyük olduğu takdirde a büyüktür b metnini
görüntüleyecektir:
<?php
if ($a > $b)
echo "a büyüktür b";
?>
Çoğunlukla birden çok deyimin koşullu olarak çalıştırılmasını
isteyeceksiniz. Elbette, her deyimi ayrı ayrı if
cümlecikleri içine almanıza gerek yoktur. Birden çok deyimi tek bir
deyim grubu içine toplayabilirsiniz. Örneğin, aşağıdaki kod
$a değeri $b değerinden büyük
olduğu takdirde a büyüktür b metnini görüntüleyecektir ve
sonrasında $a değişkeninin değerini
$b değişkenine atayacaktır:
<?php
if ($a > $b) {
echo "a büyüktür b";
$b = $a;
}
?>
Sonsuz sayıda if deyimi bir başka if deyiminin içine gömülebilir. Bu, uygulamanızın çeşitli bölümlerine koşullu deyimler uygulayabilmeniz için tam bir esneklik sağlar.
if
03-Oct-2009 11:50
28-Aug-2009 09:25
Be careful with stuff like
if ($nkey = array_search($needle, $haystack)) { ...
if the returned key is actually the key 0, then the if won't be executed
05-Apr-2009 01:13
Although most programmers are aware of this already, if for whatever reason you need to 'break' out of an if() block (which, unlike switch() is not considered a looping structure) just wrap it in an appropriate looping structure, such as a do-while(false):
<?php
do if ($foo)
{
// Do something first...
// Shall we continue with this block, or exit now?
if ($abort_if_block) break;
// Continue doing something...
} while (false);
?>
02-Apr-2009 12:32
If you need to do something when a function return FALSE and nothing when it return TRUE you can do it like that :
<?php
function call()
{
return FALSE;
}
if(call()==TRUE) // or if(call())
{
// nothing to do
}
else
{
// do something here
}
?>
You can also write it like this :
<?php
if(!call()==TRUE) // or if(!call())
{
// do something here
}
// here '!' will invert 'FALSE' (from call()) into 'TRUE'
?>
/!\ WARNING /!\
The '!' only work with booleans !
Check http://fr.php.net/manual/en/language.types.boolean.php to know if you can use '!'
If you want to compare two strings and use '!' be careful how you use it !!!!
<?php
$string1 = "cake";
$string2 = "foo";
if(!$string1==$string2)
{
echo "cake is a lie";
}
//this will ALWAYS fail without exception because '!' is applied to $string1 and not to '$string1==$string2'
//to work, you have to do like this
if(!($string1==$string2))
{
echo "cake is a lie";
}
//it will display 'cake is a lie' because ($string1==$string2) return FALSE and '!' will invert it into TRUE
?>
For array/float, it's the same !
07-Mar-2009 04:28
This has got the better part of my last 2 hours, so I'm putting it here, maybe it will save someone some time.
I had a
if (function1() && function2())
statement. Before returning true or false, function1() and function2() had to output some text. The trick is that, if function1() returns false, function2() is not called at all. It seems I should have known that, but it slipped my mind.
28-Sep-2008 12:03
Re : henryk dot kwak at gmail dot com
<?php function message($m)
{
echo "$m <br />\r";
return true;
}
$k=false;
if (message("first")&& $k && message("second")){;}
// will show
//first
class
$k=true;
if (message("first")&& $k && message("second")){;}
// will show
//first
//second
?>
25-Sep-2008 03:24
@henryk (and everybody):
You should put your arguments in order by *least* likely to be true. That way if php is going to be able to quit checking, it will happen sooner rather than later, and your script will run (what amounts to unnoticeably) faster.
At least, that makes the most sense to me, but I don't claim omniscience.
28-Aug-2008 02:22
RE: chrislabricole at yahoo dot fr on 09-Aug-2008 05:53
You're referring to the ternary operator.
http://php.net/manual/en/language.operators.comparison.php
14-Aug-2008 05:50
RE: henryk dot kwak at gmail dot com's comment from 04-May-2008 05:01
I think you made a mistake.
For maximum efficiency, assuming each expression requires the same amount of processing, the expression that is least likely to be true should come first for expressions connected by && (and). This will reduce the probability that later expressions will need to be evaluated.
The opposite is true for || (or). If the most likely expression comes first, then the probability of needing to evaluate later expressions is reduced.
10-Aug-2008 12:53
You can do IF with this pattern :
<?php
$var = TRUE;
echo $var==TRUE ? 'TRUE' : 'FALSE'; // get TRUE
echo $var==FALSE ? 'TRUE' : 'FALSE'; // get FALSE
?>
05-May-2008 12:01
When you use if command with many condidions like
if ( expr1 && expr2 && expr3 && etc. )
it is more effective to put expressions in special order
Firstly you should put that, which has the biggest
probability to occur.
This is because PHP checks each condition in order from left to right and it takes some time to check each condition.
10-Mar-2008 11:41
re: #80305
Again useful for newbies:
if you need to compare a variable with a value, instead of doing
<?php
if ($foo == 3) bar();
?>
do
<?php
if (3 == $foo) bar();
?>
this way, if you forget a =, it will become
<?php
if (3 = $foo) bar();
?>
and PHP will report an error.
09-Jan-2008 10:54
This is aimed at PHP beginners but many of us do this Ocasionally...
When writing an if statement that compares two values, remember not to use a single = statement.
eg:
<?php
if ($a = $b)
{
print("something");
}
?>
This will assign $a the value $b and output the statement.
To see if $a is exactly equal to $b (value not type) It should be:
<?php
if ($a == $b)
{
print("something");
}
?>
Simple stuff but it can cause havok deep in classes/functions etc...
