零基础去布尔商城php实战教育学php能行么

请问在源代码教育学php好吗?想报,学过的来~~托别来!_百度知道
请问在源代码教育学php好吗?想报,学过的来~~托别来!
请问在源代码教育学php好吗?想报,学过的来~~托别来!
提问者采纳
还不错的!朋友在那学过!放心报吧。
提问者评价
其他类似问题
能问问为啥学php要报名吗,自学不成吗,还是说就业的话上过培训班比较好?
为您推荐:
php的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁页面导航:
→ 正文内容 php boolean
php中的boolean(布尔)类型详解
本文是对php中的boolean(布尔)类型进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助
当转换为 boolean 时,以下值被认为是 FALSE:
the 布尔值 FALSE 自身
the 整型值 0 (零)
the 浮点型值 0.0 (零)
空 字符串, 以及 字符串 "0"
不包括任何元素的数组
不包括任何成员变量的对象(仅PHP 4.0 适用)
特殊类型 NULL (包括尚未设定的变量)
从没有任何标记(tags)的XML文档生成的SimpleXML 对象
所有其它值都被认为是 TRUE(包括任何资源)。
Warning -1 和其它非零值(不论正负)一样,被认为是 TRUE!
代码如下:&?phpvar_dump((bool) "");&&&&&&& // bool(false)var_dump((bool) 1);&&&&&&&& // bool(true)var_dump((bool) -2);&&&&&&& // bool(true)var_dump((bool) "foo");&&&& // bool(true)var_dump((bool) 2.3e5);&&&& // bool(true)var_dump((bool) array(12)); // bool(true)var_dump((bool) array());&& // bool(false)var_dump((bool) "false");&& // bool(true)  布尔转字符串时,true=&1,false=&"";
您可能感兴趣的文章:
上一篇:下一篇:
最 近 更 新
热 点 排 行
12345678910布尔教育_燕十八_PHP基础巩固.028.动态调用函数_土豆_高清视频在线观看布尔教育_燕十八_PHP基础班.009.新手常犯的错误_土豆_高清视频在线观看PHP Boolean 布尔类型
在线手册:&
Boolean 布尔类型
这是最简单的类型。 表达了真值,可以为 TRUE 或 FALSE。
要指定一个布尔值,使用关键字 TRUE 或 FALSE。两个都不区分大小写。
通常所返回的
值结果会被传递给。
转换为布尔值
要明确地将一个值转换成 ,用 (bool)
或者 (boolean) 来强制转换。但是很多情况下不需要用强制转换,因为当运算符,函数或者流程控制结构需要一个
参数时,该值会被自动转换。
时,以下值被认为是 FALSE:
值 FALSE 本身
值 0(零)
值 0.0(零)
空,以及 &0&
不包括任何元素的
不包括任何成员变量的(仅 PHP 4.0 适用)
特殊类型 (包括尚未赋值的变量)
从没有任何标记(tags)的 XML 文档生成的
所有其它值都被认为是 TRUE(包括任何)。
-1 和其它非零值(不论正负)一样,被认为是 TRUE!
在线手册:&
Ah,&yes,&booleans&-&bit&values&that&are&either&set&(TRUE)&or&not&set&(FALSE).&&Now&that&we&have&64&bit&compilers&using&an&int&variable&for&booleans,&there&is&*one*&value&which&is&FALSE&(zero)&and&2**64-1&values&that&are&TRUE&(everything&else).&&It&appears&there's&a&lot&more&truth&in&this&universe,&but&false&can&trump&anything&that's&true...PHP's&handling&of&strings&as&booleans&is&*almost*&correct&-&an&empty&string&is&FALSE,&and&a&non-empty&string&is&TRUE&-&with&one&exception:&&A&string&containing&a&single&zero&is&considered&FALSE.&&Why?&&If&*any*&non-empty&strings&are&going&to&be&considered&FALSE,&why&*only*&a&single&zero?&&Why&not&"FALSE"&(preferably&case&insensitive),&or&"0.0"&(with&how&many&decimal&places),&or&"NO"&(again,&case&insensitive),&or&...&?The&*correct*&design&would&have&been&that&*any*&non-empty&string&is&TRUE&-&period,&end&of&story.&&Instead,&there's&another&GOTCHA&for&the&less-than-completely-experienced&programmer&to&watch&out&for,&and&fixing&the&language's&design&error&at&this&late&date&would&undoubtedly&break&so&many&things&that&the&correction&is&completely&out&of&the&question.Speaking&of&GOTCHAs,&consider&this&code&sequence:&?php$x=TRUE;$y=FALSE;$z=$y&OR&$x;?&Is&$z&TRUE&or&FALSE?In&this&case,&$z&will&be&FALSE&because&the&above&code&is&equivalent&to&&?php&($z=$y)&OR&$x&?&&rather&than&&?php&$z=($y&OR&$x)&?&&as&might&be&expected&-&because&the&OR&operator&has&lower&precedence&than&assignment&operators.On&the&other&hand,&after&this&code&sequence:&?php$x=TRUE;$y=FALSE;$z=$y&||&$x;?&$z&will&be&TRUE,&as&expected,&because&the&||&operator&has&higher&precedence&than&assignment:&&The&code&is&equivalent&to&$z=($y&OR&$x).This&is&why&you&should&NEVER&use&the&OR&operator&without&explicit&parentheses&around&the&expression&where&it&is&being&used.
// someKey is a boolean true
$array = array('someKey'=&true);
// in the following 'false' string gets converted to a boolean true
if($array['someKey'] != 'false')
echo 'The value of someKey is '.$array['someKey'];
As a result the above will output nothing :)
if($array['someKey'] == 'false')
echo 'The value of someKey is '.$array['someKey'];
And the above will output
The value of someKey is 1
In short true == 'false' is true.
This&is&simple&example&how&can&convert&String&to&Boolean.&?php//&Convert&string&to&booleanfunction&convertStr($str)&{&&&&return&is_string($str)&?&(bool)&$str&:&(string)&$str;}//&Example$foo&=&convertStr('apple');var_dump($foo);&&//&Return&TRUE$foo&=&convertStr(1);&//&Return&STRINGvar_dump($foo);?&
altough it may be obvious to some, special value NaN evaluates to true, as it not in the false list
the same goes with INF and -INF
Be&careful&when&assigning&a&value&in&the&if&statement,&for&example:&if($var&=&$arg)$var&might&be&assigned&"1"&instead&of&the&expected&value&in&$arg.&?phppublic&function&myMethod(){return&'test';}public&function&myOtherMethod(){return&null;}if($val&=&$this-&myMethod()){&//&$val&might&be&1&instead&of&the&expected&'test'}if(&($val&=&$this-&myMethod())&){//&now&$val&should&be&'test'}//&or&to&check&for&falseif(&!($val&=&$this-&myMethod())&){//&this&will&not&run&since&$val&=&'test'&and&equates&to&true}//&this&is&an&easy&way&to&assign&default&value&only&if&a&value&is&not&returned:if(&!($val&=&$this-&myOtherMethod())&){$val&=&'default'}?&
Dunno&if&someone&else&posted&this&solution&already,&but&if&not,&here's&a&useful&and&function&to&convert&strings&to&strict&booleans.Note&this&one&only&checks&for&string&and&defaults&to&the&PHP&(boolean)&cast&where&e.g.&-1&returns&true,&but&you&easily&add&some&elseifs&for&other&datatypes.&?phpfunction&toStrictBoolean&($_val,&$_trueValues&=&array('yes',&'y',&'true'),&$_forceLowercase&=&true){&&&&if&(is_string($_val))&{&&&&&&&&return&(in_array(&&&&&&&&&&&&&($_forceLowercase?strtolower($_val):$_val)&&&&&&&&&&&&,&$_trueValues)&&&&&&&&);&&&&}&else&{&&&&&&&&return&(boolean)&$_val;&&&&}}?&
Function&to&sort&array&by&elements&and&count&of&element&(before&php&5.3)&(not&use&Lambda&Functions,&and&Closures)&?php//-----------------------------function&arraySortByElements($array2sort,$sortField,$order,$iscount=false)&{&&&&&&&&&&&&&$functionString='&&&&&&&&if&('.($iscount?'true':'false').'){&&&&&&&&&&&&&&if(count($a["'.$sortField.'"])&&&count($b["'.$sortField.'"]))&return&1*'.$order.';&&&&&&&&&&&&if(count($a["'.$sortField.'"])&&&count($b["'.$sortField.'"]))&return&-1*'.$order.';&&&&&&&&&&}else{&&&&&&&&&&&&if($a["'.$sortField.'"]&&&$b["'.$sortField.'"])&return&1*'.$order.';&&&&&&&&&&&&if($a["'.$sortField.'"]&&&$b["'.$sortField.'"])&return&-1*'.$order.';&&&&&&&&&&}&&&&&&&&return&0;';&&&&&&&&&&&&&usort($array2sort,&create_function('$a,$b',$functionString));&&&&&return&$array2sort;}//-----------------------------//init&Array&for&testing&:$testArray&=&array(&&&&&&&&&&&array('name'&=&&'Lenny',&'note'&=&&5,&'listId'&=&&array(654,987,32165)),&&&&&&&&&&&array('name'&=&&'Olivier',&'note'&=&3,&'listId'&=&&array(2)),&&&&&&&&&&&array('name'&=&&'Gregory',&'note'&=&&1,&'listId'&=&&array(45,58)),&&&&&&&&&&&array('name'&=&&'Clement',&'note'&=&&2,&'listId'&=&&array(584,587,741,14781,147))&&&&&&&&);//sorted&Arrays&:&&&&&&&&$testArrayByNameASC&=&arraySortByElements($testArray,'name',1);&&&&&&&&$testArrayByNoteDESC&=&arraySortByElements($testArray,'note',-1);&&&&&&&&$testArrayByCountlistIdDESC&=&arraySortByElements($testArray,'listId',-1,true);?&
Since&I&haven't&seen&it&posted.Here&is&a&function&that&you&can&use&if&you&have&a&need&to&force&strict&boolean&values.Hopefully&this&will&save&someone&some&time&from&searching&for&similar.&?phpfunction&strictBool($val=false){&&&&return&is_integer($val)?false:$val&==&1;}?&Simply&put,&it&verifies&that&the&value&passed&is&(bool)true&otherwise&it's&false.Examples:__________________________________&?php$myBool&=&strictBool(true);var_dump($myBool);//returns&(bool)true$myar&=&array(0&=&&true);$myBool&=&strictBool($myar[0]);var_dump($myBool);//returns&(bool)true$myBool&=&strictBool("hello");var_dump($myBool);//returns&(bool)false$myBool&=&strictBool(false);var_dump($myBool);//returns&(bool)false$myBool&=&strictBool(array(0&=&&"hello"));var_dump($myBool);//returns&(bool)false$myBool&=&strictBool(1);var_dump($myBool);//returns&(bool)false$myBool&=&strictBool();var_dump($myBool);//returns&(bool)false?&
Note that the comparison: (false == 0) evaluates to true and so will any value you set to false as well (without casting).
Just a side note, doesn't really matters, the reason -1 is true and not false is because boolean type is treated as unsigned, so -1 would be for example, if it's unsigned int32 translate to hex: 0xFFFFFFFF and back to decimal:
which is non-zero. there isn't really a &negative boolean&. it's a binary thing. :o (since it used to be a bit and then there was only 0 and 1 as an option)
PHP&is&very&fussy&converting&strings&to&booleans.&The&only&ones&it&recognizes&are&'0'&or&'',&everything&else&evaluates&to&TRUE,&even&'false'&and&'0.0'&are&evaluated&as&true!&I&suppose&this&can't&be&fixed&without&breaking&a&lot&of&existing&code.Example:&?phpprint&'yes'."\t".((bool)'yes'?&1:&0)."\n";print&'true'."\t".((bool)'true'?&1:&0)."\n";print&'no'."\t".((bool)'no'?&1:&0)."\n";print&'false'."\t".((bool)'false'?&1:&0)."\n";print&'1'."\t".((bool)'1'?&1:&0)."\n";print&'0'."\t".((bool)'0'?&1:&0)."\n";print&'0.0'."\t".((bool)'0.0'?&1:&0)."\n";print&''."\t".((bool)''?&1:&0)."\n";?&Output:yes&&&&&1true&&&&1no&&&&&&1false&&&11&&&&&&&10&&&&&&&00.0&&&&&1&&&&&&&&0
A&note&when&working&with&PostgreSQL&-&if&you&select&a&boolean&field&from&the&database,&it&returns&'t'&or&'f'.&If&you&directly&evaluate&a&variable&storing&a&boolean&from&a&PostgreSQL&database,&it&will&always&return&true.For&example...&?php$x&=&pg_query("SELECT&someBool&FROM&atable");$x&=&pg_fetch_array($x);$x&=&$x['someBool'];if&($x)&echo&"true";else&echo&"false";?&...ALWAYS&outputs&true
Beware&of&certain&control&behavior&with&boolean&and&non&boolean&values&:&?php//&Consider&that&the&0&could&by&any&parameters&including&itselfvar_dump(0&==&1);&//&falsevar_dump(0&==&(bool)'all');&//&falsevar_dump(0&==&'all');&//&TRUE,&take&carevar_dump(0&===&'all');&//&false//&To&avoid&this&behavior,&you&need&to&cast&your&parameter&as&string&like&that&:var_dump((string)0&==&'all');&//&false?&
CODING&PRACTICE...Much&of&the&confusion&about&booleans&(but&not&limited&to&booleans)&is&the&fact&that&PHP&itself&automatically&makes&a&type&cast&or&conversion&for&you,&which&may&NOT&be&what&you&want&or&expect.&In&most&cases,&it's&better&to&provide&functions&that&give&your&program&the&exact&behavior&you&want.&?phpfunction&boolNumber($bValue&=&false)&{&&&&&&&&&&&&&&&&&&&&&&//&returns&integer&&return&($bValue&?&1&:&0);}function&boolString($bValue&=&false)&{&&&&&&&&&&&&&&&&&&&&&&//&returns&string&&return&($bValue&?&'true'&:&'false');}$a&=&true;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//&boolean&valueecho&'boolean&$a&AS&string&=&'&.&boolString($a)&.&'&br&';&&&//&boolean&as&a&stringecho&'boolean&$a&AS&number&=&'&.&boolNumber($a)&.&'&br&';&&&//&boolean&as&a&numberecho&'&br&';$b&=&(45&&&90);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//&boolean&valueecho&'boolean&$b&AS&string&=&'&.&boolString($b)&.&'&br&';&&&//&boolean&as&a&stringecho&'boolean&$b&AS&number&=&'&.&boolNumber($b)&.&'&br&';&&&//&boolean&as&a&numberecho&'&br&';$c&=&boolNumber(10&&&8)&+&boolNumber(!(5&&&10));&&&&&&&&&&&&//&adding&booleansecho&'integer&$c&=&'&.&$c&.'&br&';?&Results&in&the&following&being&printed...&boolean&$a&AS&string&=&true&boolean&$a&AS&number&=&1&boolean&$b&AS&string&=&false&boolean&$b&AS&number&=&0&integer&$c&=&2In&other&words,&if&we&know&what&we&want&out&of&our&program,&we&can&create&functions&to&accommodate.&Here,&we&just&wanted&'manual&control'&over&numbers&and&strings,&so&that&PHP&doesn't&confuse&us.
It&is&correct&that&TRUE&or&FALSE&should&not&be&used&as&constants&for&the&numbers&0&and&1.&But&there&may&be&times&when&it&might&be&helpful&to&see&the&value&of&the&Boolean&as&a&1&or&0.&Here's&how&to&do&it.
&?php
$var1&=&TRUE;
$var2&=&FALSE;
echo&$var1;&//&Will&display&the&number&1
echo&$var2;&//Will&display&nothing
/*&To&get&it&to&display&the&number&0&for
a&false&value&you&have&to&typecast&it:&*/
echo&(int)$var2;&//This&will&display&the&number&0&for&false.
?&
PHP does not break any rules with the values of true and false.
The value false is not a constant for the number 0, it is a boolean value that indicates false.
The value true is also not a constant for 1, it is a special boolean value that indicates true.
It just happens to cast to integer 1 when you print it or use it in an expression, but it's not the same as a constant for the integer value 1 and you shouldn't use it as one.
Notice what it says at the top of the page:
A boolean expresses a truth value.
It does not say &a boolean expresses a 0 or 1&.
It's true that symbolic constants are specifically designed to always and only reference their constant value.
But booleans are not symbolic constants, they are values.
If you're trying to add 2 boolean values you might have other problems in your application.
Note that the symbolic constants TRUE and FALSE are treated differently.
I was told that this is a feature, not a bug.
echo (false) ;
echo false+
echo (false+false) ;
echo intval(false) ;
echo '&'.false.'&' ;
echo (true) ;
echo true+
echo (true+true) ;
echo intval(true) ;
echo '&'.true.'&' ;
should produce
but instead produces
000&&11221&1&
In other words, the only way to output the underlying zero or use it in a string is to use 'false+false' or pass it through intval().
No such tricks are required to get at the 1 that underlies true.
The whole idea of symbolic constants is that the underlying value *always* replaces them during translation, and thus anywhere you would otherwise have to use some obscure &magic number& such as 191, you can use a symbolic constant that makes sense, such as TOTAL_NATIONS.
Exactly what php gets out of breaking this rule was not explained to me.
Note&you&can&also&use&the&'!'&to&convert&a&number&to&a&boolean,&as&if&it&was&an&explicit&(bool)&cast&then&NOT.So&you&can&do&something&like:&?php$t&=&!0;&//&This&will&===&$f&=&!1;&//&This&will&===&?&And&non-integers&are&casted&as&if&to&bool,&then&NOT.Example:&?php$a&=&!array();&&&&&&//&This&will&===&$a&=&!array('a');&&&//&This&will&===&$s&=&!"";&&&&&&&&&&&//&This&will&===&$s&=&!"hello";&&&&&&//&This&will&===&?&To&cast&as&if&using&a&(bool)&you&can&NOT&the&NOT&with&"!!"&(double&'!'),&then&you&are&casting&to&the&correct&(bool).Example:&?php$a&=&!!array();&&&//&This&will&===&&(as&expected)/*&This&can&be&a&substitute&for&count($array)&&&0&or&!(empty($array))&to&check&to&see&if&an&array&is&empty&or&not&&(you&would&use:&!!$array).*/$status&=&(!!$array&?&'complete'&:&'incomplete');$s&=&!!"testing";&//&This&will&===&&(as&expected)/*&Note:&normal&casting&rules&apply&so&a&!!"0"&would&evaluate&to&an&===&false*/?&
Beware that &0.00& converts to boolean TRUE !
You may get such a string from your database, if you have columns of type DECIMAL or CURRENCY. In such cases you have to explicitly check if the value is != 0 or to explicitly convert the value to int also, not only to boolean.

我要回帖

更多关于 php 布尔型 的文章

 

随机推荐