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">//////
汽车