#zephir-運算符#php
##前言## 先在這裏感謝各位zephir開源技術提供者git
瞭解的動態變量和靜態變量以後咱們今天來了解一下在編碼工做中相當重要的運算符在zephir中的使用,已經一些特殊函數對空的驗證等等之類操做的講解.github
注:筆者水平有限,說的不正確的地方但願你們多多指正,一同交流技術數組
附上:函數
喵了個咪的博客:w-blog.cn學習
zephir官網地址:http://zephir-lang.com/fetch
github地址:https://github.com/phalcon/zephirthis
##1. 運算符##編碼
Zephir運算符相似於PHP的,也繼承了他們的一些行爲。code
###1.1 算術運算符###
支持如下操做:
操做 例子 取反 - a 加法 a + b 減法 a - b 乘法 a * b 除法 a / b 取模 % b
###1.2 比較運算符###
比較運算符的類型取決於變量相比,例如,若是兩個操做數是動態變量相比PHP的行爲是同樣的:
a == 平等的 真的若是a等於b在雜耍類型。 == b 相同的 真若是a = b,它們是相同的類型。 a! = b 不平等的 後若是不等於b類型雜耍。 < > b 不平等的 後若是不等於b類型雜耍。 a! == b 不徹底相同 真的不等於b,或者他們不是同一類型的。 < b 小於 真正的若是是嚴格小於b。 a > 大於 真正的若是是嚴格大於b。 <= b 小於或等於 真正的若是是小於或等於b。 a >= 大於或等於 真正的若是是大於或等於b。
例子:
if a == b { return 0; } else { if a < b { return -1; } else { return 1; } }
###1.3 邏輯運算符###
支持如下操做: 操做 例子 並 && b 或 a|| b 不 !
例子:
if a && b || !c { return -1; } return 1;
###1.4 位運算符###
支持如下操做: 操做 例子 和 a&b 包括 a| 異或 a^ 取反 ~a 左移位 << b 右移位 a >>
例子:
if a & SOME_FLAG { echo "has some flag"; }
###1.5 三元運算符###
Zephir支持三元操做符和C或PHP類似:
let b = a == 1 ? "x" : "y";
##2 特殊的操做##
###2.1 Empty###
這個操做符容許檢查是否一個表達式是空的。 「Empty」意味着表達式爲空,空字符串或一個空數組:
let someVar = ""; if empty someVar { echo "is empty!"; } let someVar = "hello"; if !empty someVar { echo "is not empty!"; }
###2.2 Isset###
這個操做符檢查是否一個屬性或索引數組或對象中定義:
let someArray = ["a": 1, "b": 2, "c": 3]; if isset someArray["b"] { //檢查數組索引「b」 echo "yes, it has an index 'b'\n"; }
使用「isset」返回表達式:
return isset this->{someProperty};
注意,「isset」更像PHP的array_key_exists功能,Zephir中「isset」返回true即便數組索引或屬性是空的。
###2.3 Fetch###
「Fetch」是一個操做符,減小在PHP中常見的操做爲一個指令:
<?php if (isset($myArray[$key])) { $value = $myArray[$key]; echo $value; }
在Zephir,您能夠編寫相同的代碼爲:
if fetch value, myArray[key] { echo value; }
「Fetch」只返回true,若是數組中的「key」是一個有效的值,只有在這種狀況下,寫入值。
###2.4 Typeof ###
這個操做符檢查變量類型。 「Typeof」像比較運算符:
if (typeof str == "string") { // or != echo str; }
typeof也很像PHP函數「gettype」。
return typeof str;
當心:若是你想檢查對象「能夠被調用」會一直使用typeof的比較運算符。
##3. 總結##
本小節主要講解了一些經常使用的運算符和一些經常使用的特殊函數,其實看起來和php中的差異並不大,這也是做者的用心,在以後未來學習數組和對象相關的知識但願你們喜歡!
注:筆者能力有限有說的不對的地方但願你們可以指出,也但願多多交流!
zephir技術交流:246348908 歡迎你們的加入!
感謝zephir開發人員: