PHP 学习语法

<html>
<meta charset="UTF-8">
<body>
	<h1>It works!</h1>
	namespace Library;
	<?php
		
		echo "<pre>";
		//1.数据类型
		$bool = true;
		$bool2 = false;
		$a = 3.14;
		$char1 = "双引号字符串";
		$char2 ='单引号字符串';
		//单引号和双引号在变量表示和字符的转义有区别
		echo "$char1"."<br>"."$char2<br>";
		echo  "检测变量的类型使用函数";
		$ais = NULL;
		echo "检查是否为空:".is_null($ais)."<br>";
		echo "检查是否是浮点数:".is_float($a)."<br>";
		// s_file()
		// is_array()
		// is_string(var)

		$ais = "string";
		echo "检查是否是字符串:".is_float($ais)."<br>"; //在我这里条件为假的时候不打印信息,为真的时候打印0;
		if (!is_float($ais)) { 
			echo "不是字符串<br>";
		}
		//可以将变量的值作为一个变量的名称,这里竟然是可变变量
		$txt = 'abc';
		$$txt = "hello"; //等于 $abc = 'hello';
		echo "验证可变变量:$abc = hello<br>";
		//变量类型的转换。phpc存在自动类型的变量转换,

		$a = 0;
		$b = 0.0;
		$c ="";
		$d = "0";
		$e = array();//数组类型
		$f = NULL;
		//这个判断两个条件竟然都不执行
		if ($a==false&&$b==false&&$c==false&&$d==false&&$e==false&&$f==false) {
			echo '都真的是false<br>';
		}
		$b = $a + 1;
		var_dump($b);//dump能够打印出类型

		$a = 1 + "-1.5e2";
		echo "<br>字符和整数相加:$a<br>";
		$a = true+1;
		echo "bool转换$a<br>";

		//转换字符串类型
		$a = ture ;
		$b =3 ;
		$c = 5.5;
		$d = $a. 'string'.$b.$c;
		var_dump($d);

		//强制类型转换 -- (类型)变量
		$num = 10.00;//10.00 是字串10
		var_dump((string)$num);
		$a;$b;$c;//逗号不行
		$a=$b=$c =10;
		echo "$a$b$c<br>";

		//流程语句
		switch ($a) {
			case 1:
				echo "---1";
				break;
			case 10:
				echo "====$a";
				break;	
			default:
				break;
		}
		for ($i=0; $i <10 ; $i++) { 
			 echo "$i.";
		}
		echo "<br>";
		//替换语法,括号换成冒号--endfor
		for ($i=0; $i < 5; $i++):
			echo "$i";
		endfor;
		//-----函数定义
		function call($name)
		{
			echo "你好,我是$name<br>";
		}
		call("王国栋");	
		function add($one,$two)
		{
			return $one + $two;
		}

		echo add(2,3);
		//echo add(2,3);
		$var = 100;
		function testone (){
			global $var;
			echo "全局变量的值是:$var";
			echo $GLOBALS['var']."<br>";
		}
		testone();
		//可变函数
		$aliasTestOne = "testone";
		$aliasTestOne();
		//字符串相关的函数
		$str = "apple,pear,banana,orange";
		$arr = explode(",", $str);
		print_r($arr);

		$arrayName = array("apple","pear","bananer");
	    echo implode("&", $arrayName);

	    //strcmp和==比较字符串一样,但是结果正好相反
	    //trim strlen 函数
	    //时间戳
	    echo "<br>";
	    //mktime 函数有许多参数
	    echo  date("Y-m-d:H-i-s",mktime());//当前的时间,但是不准确
	    /*
			mktime加参数出错
	    */
		echo "<br>";
	    echo  date("Y-m-d:H-i-s",mktime(14,28,56,4,10,2013));//当前的时间,但是不准确
	    echo "<br><br>";
	    //设置时区
 		date_default_timezone_set("Asia/Shanghai");
 		echo date("Y-m-d H-i-s",time());

 		//输出明天时间点,
 		echo "<br>".date("Y-m-d H-i-s",strtotime("+1 day"));;

 		function microtime_float(){

 			list($usec,$sec) = explode(" ", microtime());
 			return ((float)$usec+(float)$sec);
 		}
 		$time_start = microtime_float();
 		usleep(1000);
 		$time_end = microtime_float();
 		$time  = $time_end - $time_start;
 		echo "执行时间是 $time"
 		;

 		function appleNumber($n)
 		{
 			if (1==$n) {
 				return (1+1)*2;
 			}
 			else
 			{
 				return 2*(appleNumber($n-1)+1);
 			}
 		}
 		echo "<br>桃子的个数是:".appleNumber(3);

 		//数组
 		$arr = array('key' => "name",'key2'=> "name2");//打印数组
 		print_r($arr);
 		var_dump($arr);//可以输出类型

 		$arridx[0]=123;
 		$arridx[1]=124;
 		$arridx[2]='hello';
 		echo "删除前:";
 		print_r($arridx);
 		echo "删除后:";
 		unset($arridx[1]);
 		print_r($arridx);

 		$arrone = array('a' => "abc",'b' => 'bcd' );
 		$arrtwo = array('a' => "cde", 'd' =>'def');
 		$c =  $arrone + $arrtwo;
 		var_dump($c);
 		echo "each函数的用法:-------<br/>";
 		$shuzu = array('one' => 'ONE','two','Three'=>'3','four',5);
 		print_r(each($shuzu));
 		print_r(each($shuzu));

 		echo "数组遍历\n";
 		foreach ($shuzu as $key => $value) {
			echo "$key";
			echo "=>";
			echo "$value";
			echo "\n";
 		}
 		//foreache 和list each遍历数组
 		$dict = array('os' => "linux",'server' =>'Apache','language'=>'Php','database'=>'MySql');
 		
 		while (list($key,$value)=each($dict)) {
 			echo "$key=>$value\n";
 		}
 		$sort = array(9,8,10,2,4);
 		function bubbleSort($array)
 		{
 			for ($i=0; $i <count($array) ; $i++) { 
 				for ($j=0; $j <count($array)-$i-1 ; $j++) { 
 					if ($array[$j]>$array[$j+1]) {
 					    $t = $array[$j];
 						$array[$j] = $array[$j+1];
 						$array[$j+1] = $t;
 					}
 				}
 			}
 			print_r($array);
 		}
 		bubbleSort($sort);
 		$arrfunc = array(1,2,2,4,5);
 		is_array($arrfunc);
 		print_r(array_unique($arrfunc));
 		echo array_search('Apache', $dict);
 		$array = array(1,2,3,11,'11');
 		print_r(array_keys($array));
 		print_r(array_keys($array,"11",false));//查找11不依赖类型

 		sort($array,SORT_NUMERIC);
 		print_r($array);

 		echo "</pre>";

 		/**
 		* 
 		*/
 		class Person
 		{
 			public $name;
 			public $age;

 			function  __construct($name,$age)
 			{
 				if ($name==NULL) {
 					$name = "def";
 				}
 				if ($age==NULL) {
 					$age = 10;
 				}
 				$this->name = $name;
 				$this->age = $age;
 			}
 			public  function speak(){
 				echo "大家好,我叫".$this->name."今年".$this->age."岁\n";//this 不调用get方法
 			}
 			public function __get($property_name)
 			{

 				echo "自动调用__get方法获取属性\n";
 				if (isset($this->$property_name)) {
 					return ($this->$property_name);
 				}
 				else
 				{
 					return (NULL);
 				}
 			}
 			public function __set($property_name,$value)
 			{
 				echo "自动调用set方法\n";
 				$this->$property_name = $value;
 			}
 			//析构函数
 			function __destruct()
 			{
 				echo "对象被销毁";
 			}

 		}
 		//--------------------------------这里需要看下,在定义construct方法后,这样不行
 		// $me =  new Person();
 		// $me->name = "guodong";
 		// $me->age = 10;
 		// $me->speak();
 		// echo "$me->name";// 这里会调用get方法

 		$me2 = new Person("xiaowang","25");
 		$me2->speak();

 		//echo Person::PI;
 		//
 		/**
 		* 
 		*/
 		class MathTool
 		{
 			const PI = 3.14;
 			static $schoolName = "php学院";//对象共享
 			function show ()
 			{
 				echo self::PI;
 				echo MathTool::$schoolName;//---少了$
 				echo "\n";
 				//echo MathTool::PI;
 			}
 			//类方法
 			public static function classMethod()
 			{
 				echo "这相当于oc里面的类方法\n";
 			}
  		}
  		$stu1 = new MathTool();
  		$stu2 = new MathTool();
  		$stu2->show();
  		$stu1->show();
  		MathTool::classMethod();

  		/**
  		* 
  		*/
  		final class superMathTool extends MathTool //禁止其他类继承
  		{
  		    final function show()
  			{
  				echo "子类重写父类方法";
  			}
  		}
  		$math = new superMathTool();
  		$math->show();
  		abstract class Animail //抽象类,可以包含非抽象方法
  		{
  			abstract  function shout();
  		}
  		/**
  		* 
  		*/
  		class Dog extends Animail
  		{
  			function shout()
  			{
  				echo "\n汪汪汪\n";
  			}
   		}
   		(new Dog())->shout();
   		//--接口。类似于OC,

   		interface Animail2 
   		//抽象类,可以包含非抽象方法,没有class关键字
   		//
  		{
  			  function shout();//这里也没有abstract
  		}
   		class Dog2 implements Animail2 
  		{
  			function shout()
  			{
  				echo "\n汪汪汪\n";
  			}
   		}
   		(new Dog2())->shout();
   		//一个类可以实现多个接口,和OC一样
   		//错误处理
   		ini_set('display_errors', 1);
   		$rand_num = mt_rand(0,1);
   		if ($rand_num==0) {
   			error_reporting(E_ALL);
   		}
   		else
   		{
   			error_reporting(E_ALLE_NOTICE);
   		}
   		echo $info;



    ?>
</body></html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值