#zephir-运算符#
![](https://i0.wp.com/i.imgur.com/OuZmZ0R.png)
##前言## 先在这里感谢各位zephir开源技术提供者
了解的动态变量和静态变量之后我们今天来了解一下在编码工作中至关重要的运算符在zephir中的使用,已经一些特殊函数对空的验证等等之类操作的讲解.
注:笔者水平有限,说的不正确的地方希望大家多多指正,一同交流技术
附上:
喵了个咪的博客:w-blog.cn
zephir官网地址:http://zephir-lang.com/
github地址:https://github.com/phalcon/zephir
##1. 运算符##
Zephir运算符类似于PHP的,也继承了他们的一些行为。
###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开发人员:
![](https://i0.wp.com/i.imgur.com/puoG4mx.png)
来源:oschina
链接:https://my.oschina.net/u/2394822/blog/632316