php(1)—基础
-
数据类型
- bool
-1 和其它非零值(不论正负)一样,被认为是 TRUE
!
而只有空和零会被认为false
- float
//浮点数比较 $a = 1.23456789; $b = 1.23456780; $epsilon = 0.0000001; if(abs($a-$b) < $epsilon) { echo "true"; }
- heredoc结构
echo <<<EOT My name is "$name". I am printing some $foo->foo. #foo类中的一个属性 Now, I am printing some {$foo->bar[1]}. #foo类中数组元素 This should print a capital 'A': \x41 EOT;
在红字之间的 变量将被替换,可以直接转义
- 字符串
连接
$x="5"; $y="7"; $z=$x.$y; echo $z; //57 $x="5"; $y="7"; $z=$x + $y; echo $z; //12
获取长度
echo strlen("Hello world!"); //12
echo strpos("Hello world!","world"); #6 索引从0开始
echo(022); //0开头代表八进制 0x十六进制 0b二进制
echo (int) ( (0.1+0.7) * 10 ); // 显示 7!,解决方法去掉前面的int
// 在单引号字符串中的变量和特殊字符的转义序列将不会被替换
echo '\t ww';
echo "\t ee";#\t ww ee
可以在字符串中直接应用变量
$a = "f"; echo "I'm$a";
- 数组
$arr = array('apple'=>"苹果",'banana'=>"香蕉");
$arr0=$arr["apple"];
if( isset($arr0)) //isset判断变量是否声明
{print_r($arr0); #苹果
}
$cars=array("Volvo","BMW","SAAB");
echo "My car is a {$cars[0]}";
获取数组的长度
echo count($cars);
- 对象
class foo
{
function do_foo()
{
echo "Doing foo.";
}
}
$bar = new foo;
$bar->do_foo();
class Car { var $color; //类的属性 在对象中函数的定义需要用var var $Size; function Car($color="green",$size=2) { //构造方法 $this->color = $color; $this->Size = $size; } function what_color() { return $this->color; } } function print_vars($obj) { //get_object_vars获取类中所有属性 foreach (get_object_vars($obj) as $prop => $val) { echo "\t$prop = $val\n"; } } $herbie = new Car("white"); //实例化 echo "\herbie: Properties\n"; //打印提示 print_vars($herbie); //调用方法打印所有属性
echo $herbie->Size; //打印对象属性值
- Local 和 Global 作用域
函数之外声明的变量拥有 Global 作用域,只能在函数以外进行访问。
函数内部声明的变量拥有 LOCAL 作用域,只能在函数内部进行访问。
$x=5; $y=10; $z=1; function myTest() { $a="kk"; global $x,$y; //获取全局变量 $y=$x+$y; echo $GLOBALS['z']." "; //$GLOBALS[index] 的数组中存储了所有的全局变量 } myTest(); echo $y; // 输出 15
- static变量
function myTest() { static $x=0; echo $x." "; $x++; } myTest(); myTest(); myTest();
每当函数被调用时,这个变量所存储的信息都是函数最后一次被调用时所包含的信息。
该变量仍然是函数的局部变量。
- 常量
// 定义对大小写不敏感的常量 define("GREETING", "Welcome to W3School.com.cn!", true); echo GREETING; echo "<br>"; // 会输出常量的值 echo greeting;
- foreach 循环
$colors = array("red","green","blue","yellow"); foreach ($colors as $value) { echo "$value <br>"; }
- 函数
function setHeight($minheight=50) { //设置默认值 echo "The height is : $minheight <br>"; } setHeight(350); setHeight(); // 将使用默认值 50 setHeight(135); setHeight(80);
- 数组排序
对数组进行升序排序 - sort() $numbers=array(3,5,1,22,11); sort($numbers); //遍历结果:1,3,5,11,22 对数组进行降序排序 - rsort() 根据值对数组进行升序排序 - asort() $age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43"); asort($age); 根据键对数组进行升序排序 - ksort() 根据值对数组进行降序排序 - arsort() 根据键对数组进行降序排序 - krsort()
- 超全局变量
$GLOBALS —引用全局作用域中可用的全部变量(同上)
$x = 30; $y = 65; function addition() { $GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y']; } addition(); echo $z;
$_SERVER —保存关于报头、路径和脚本位置的信息。
echo $_SERVER['SERVER_ADDR']; //127.0.0.1 echo "<br>";
$_REQUEST 用于收集 HTML 表单提交的数据。
第一个页面index.html <form method="post" action="test.php"> Name: <input type="text" name="fname"> <input type="submit"> </form> 第二个页面test.php 可以获取到传值 $name = $_REQUEST['fname']; echo $name;
$_POST 广泛用于收集提交 method="post" 的 HTML 表单后的表单数据。$_POST 也常用于传递变量
$_GET 也可用于收集提交 HTML 表单 (method="get") 之后的表单数据。
第一个页面index.php <a href="test.php?subject=PHP&who=I">测试 $GET</a> 第二个页面test.php echo $_GET['who'] ." want to study ". $_GET['subject'] ;
还有 $_FILES、$_ENV、$_COOKIE、$_SESSION这些
- 魔术常量
__LINE__文件中的当前行号 echo '这是第 " ' . __LINE__ . ' " 行'; __FILE__文件的完整路径和文件名。 echo '该文件位于 " ' . __FILE__ . ' " '; __DIR__文件所在的目录 echo '该文件位于 " ' . __DIR__ . ' " '; __FUNCTION__函数名称 function test() { echo '函数名为:' . __FUNCTION__ ; } test(); __CLASS__类的名称 class test { function _print() { echo '类名为:' . __CLASS__ . "<br>"; echo '函数名为:' . __FUNCTION__ ; } } $t = new test(); $t->_print(); __TRAIT__代码复用 从基类继承的成员被插入的 SayWorld Trait 中的 MyHelloWorld 方法所覆盖。
其行为 MyHelloWorld 类中定义的方法一致。
优先顺序是当前类中的方法会覆盖 trait 方法,而 trait 方法又覆盖了基类中的方法。 class Base { public function sayHello() { echo 'Hello '; } } trait SayWorld { public function sayHello() { parent::sayHello(); echo 'World!'; } } class MyHelloWorld extends Base { use SayWorld; } $o = new MyHelloWorld(); $o->sayHello(); //Hello World! __NAMESPACE__当前命名空间的名称 echo '命名空间为:"', __NAMESPACE__, '"'; // 输出 "MyProject"