php进阶篇
php进阶篇2016-11-02
PHP有两种数组:索引数组、关联数组。
索引和关联两个词都是针对数组的键而言的。
先介绍下索引数组,索引数组是指数组的键是整数的数组,并且键的整数顺序是从0开始,依次类推。
下面使用图来说明一下:
可以使用下面代码实现:
$fruit = array("苹果","香蕉","菠萝");
注意数组的键是从0开始的。可以使用print_r($fruit);
语句输出数组键及对应的值。
<?php //创建一个索引数组,索引数组的键是“0”,值是“苹果” $fruit = array("苹果",'香蕉','菠萝'); echo '<pre>'; print_r( $fruit ); echo '</pre>'; ?> 输出 <pre>Array ( [0] => 苹果 [1] => 香蕉 [2] => 菠萝 )
索引数组赋值有三种方式:
第一种:用数组变量的名字后面跟一个中括号的方式赋值,当然,索引数组中,中括号内的键一定是整数。比如,$arr[0]='苹果';
第二种:用array()
创建一个空数组,使用=>
符号来分隔键和值,左侧表示键,右侧表示值。当然,索引数组中,键一定是整数。比如,array('0'=>'苹果');
第三种:用array()
创建一个空数组,直接在数组里用英文的单引号'
或者英文的双引号"
赋值,数组会默认建立从0开始的整数的键。比如array('苹果');
这个数组相当于array('0'=>'苹果');
<?php $arr=array('0'=>'苹果','1'=>'西瓜'); $arr1 = array("苹果",'香蕉','菠萝'); $arr2=array(); $arr2[0]="苹果"; $arr2[1]="香蕉"; $arr2[2]="菠萝"; print_r($arr); echo '<pre>'; print_r( $arr1 ); echo '</pre>'; echo '<pre>'; print_r( $arr2 ); echo '</pre>'; ?> ////// ( [0] => 苹果 [1] => 香蕉 [2] => 菠萝 )
Array ( [0] => 苹果 [1] => 香蕉 [2] => 菠萝 )
<?php //从数组变量$arr中,读取键为0的值 $arr = array('苹果','香蕉'); $arr0 = $arr['0']; if( isset($arr0) ) {print_r($arr0);} ?> ////// <pre>苹果 isset()在php中用来检测变量是否设置,该函数返回的是否布尔值,即true/false。
<?php $fruit=array('苹果','香蕉','菠萝'); for($index=0; $index<3; $index++){ echo '数组第'.$index.'值是:'.$fruit[$index]."<br/>"; } ?> ////// 数组第0值是:苹果 数组第1值是:香蕉 数组第2值是:菠萝
<?php $fruit=array('苹果','香蕉','菠萝'); foreach($fruit as $key=>$value){ echo '第'.$key.'值是:'.$value.'<br/>'; } foreach($fruit as $value){ echo $value.'<br/>'; } ?> ////// 第0值是:苹果 第1值是:香蕉 第2值是:菠萝 苹果 香蕉 菠萝
索引和关联两个词都是针对数组的键而言的。
先介绍下,关联数组是指数组的键是字符串的数组。
<?php $fruit = array( 'apple'=>"苹果", 'banana'=>"香蕉", 'pineapple'=>"菠萝" ); print_r($fruit) ?> ////// Array ( [apple] => 苹果 [banana] => 香蕉 [pineapple] => 菠萝 )
关联数组赋值有两种方式:
第一种:用数组变量的名字后面跟一个中括号的方式赋值,当然,关联数组中,中括号内的键一定是字符串。比如,$arr['apple']='苹果';
第二种:用array()
创建一个空数组,使用=>
符号来分隔键和值,左侧表示键,右侧表示值。当然,关联数组中,键一定是字符串。比如,array('apple'=>'苹果');
<?php $arr = array('apple'=>'苹果','pineapple'=>'菠萝'); if( isset($arr)){ print_r($arr); } ?> ////// Array ( [apple] => 苹果 [pineapple] => 菠萝 )
用数组变量的名字后跟中括号+键的方式来访问数组中的值,键使用单引号或者双引号括起来。
<?php $fruit = array('apple'=>"苹果",'banana'=>"香蕉",'pineapple'=>"菠萝"); $fruit0 = $fruit['banana']; print_r($fruit0); ?> ////// 香蕉
<?php $fruit=array('apple'=>"苹果",'banana'=>"香蕉",'pineapple'=>"菠萝"); foreach($fruit as $k=>$v){ echo '水果的英文键名:'.$k.',对应的值是:'.$v.'<br/>'; } ?> ////// 水果的英文键名:apple,对应的值是:苹果 水果的英文键名:banana,对应的值是:香蕉 水果的英文键名:pineapple,对应的值是:菠萝
function
”开始function name()
3.在大括号中编写函数体:
<?php function say() { echo 'hello world'; } say(); //在这里调用函数 ?> ////// hello world
PHP的函数可以没有参数,也可以有若干个参数,多个参数称之为参数列表,采用逗号进行分割,参数类似于一个变量,调用时用来传递数据到函数体中。通过传递参数可以使函数实现对参数的运算,得到我们想要的结果。
参数的变量名可以自由指定,但最好能够表达相关的意思
<?php function sum($a, $b) { echo $a + $b; } sum(2,5); //在这里调用函数计算1+2的值 ?> ////// 7
<?php function add($a) { return $a+1; } $b = add(1); echo $b; ?> ////// 2返回语句会立即中止函数的运行,并且将控制权交回调用该函数的代码行
<?php function add($a) { return $a+1; $a = 10; return $a+20; } $b = add(1); echo $b; ?> ////// 2
函数不能返回多个值,但可以通过返回一个数组来得到类似的效果
<?php function numbers() { return array(1, 2, 3); } list ($one, $two, $three) = numbers(); echo $one; echo $two; echo $three; ?> ////// 123 函数不能返回多个值,但可以通过返回一个数组来得到类似的效果
array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) } 这是numbers()返回的值list()只是举个例子而已,重点是函数函数不能返回多个值。
<?php function numbers() { return array(1, 2, 3); } $hh=numbers(); print_r ($hh); ?> ////// Array ( [0] => 1 [1] => 2 [2] => 3 )
<?php function name() { echo 'jobs'; } $func = 'name'; $func(); //调用可变函数 ?> ////// jobs可变函数也可以用在对象的方法调用上。
<?php class book { function getName() { return 'bookname'; } } $func = 'getName'; $book = new book(); echo $book->$func(); ?> ////// bookname
通过内置函数str_replace可以实现字符串的替换。下面的例子将“jobs”替换成“steven jobs”:
<?php $str = 'i am jobs.'; $str = str_replace('jobs', 'steven jobs', $str); echo $str; //结果为“i am steven jobs” ?>
<?php function func() { } if (function_exists('func')){ echo 'exists'; } ?>
<?php class MyClass{ } // 使用前检查类是否存在 if (class_exists('MyClass')) { $myclass = new MyClass(); } ?>
<?php $filename = 'test.txt'; if (!file_exists($filename)) { echo $filename . ' not exists.'; } ?>
<?php function func() { echo 'exists'; } $name = 'func'; if (function_exists($name)) { //判断函数是否存在 $name(); } ?>
通常定义一个汽车类的方法为:
<?php class Car { $name = '汽车'; function getName() { return $this->name; } } ?>
类是一类东西的结构描述,而对象则是一类东西的一个具体实例,例如汽车这个名词可以理解为汽车的总类,但这辆汽车则是一个具体的汽车对象。
对象通过new关键字进行实例化:
$car = new Car(); echo $car->getName();类与对象看起来比较相似,但实际上有本质的区别,类是抽象的概念,对象是具体的实例。类可以使程序具有可重用性。
<?php class car{ public function rec(){ echo "你好"; } public function caa(){ $this->rec(); } } $cat=new car(); $cat->caa(); ?> ////// 你好定义类的属性为公共,
<?php class Car { var $name = '汽车'; function getName() { return $this->name; } } //实例化一个car对象 $car = new Car(); echo $car->getName(); //调用对象的方法 输出对象的名字 echo $car->name; ?> ////// 汽车汽车
<?php class Car { public $name = '汽车'; function getName() { return $this->name; } } //实例化一个car对象 $car = new Car(); echo $car->getName(); //调用对象的方法 输出对象的名字 echo $car->name; ?> ////// 汽车汽车
<?php //定义一个类 class Car { var $name = '汽车'; function getName() { return $this->name; } } //实例化一个car对象 $car = new Car(); $car->name = '奥迪A6'; //设置对象的属性值 echo $car->getName(); //调用对象的方法 输出对象的名字 ?> ////// 奥迪A6
<?php //定义一个类 class Car { //定义属性 public $name = '汽车'; //定义方法 public function getName() { //方法内部可以使用$this伪变量调用对象的属性或者方法 return $this->name; } } $car = new Car(); echo $car->getName(); //调用对象的方法 输出对象的名字 ?> ////// 汽车
<?php //定义一个类 class Car { //定义属性 public $name = '汽车'; //定义方法 public function getName() { //方法内部可以使用$this伪变量调用对象的属性或者方法 return $this->name; } } $className = 'Car'; $car = new $className(); echo $car->getName(); ?> <pre name="code" class="php">////// 汽车