PHP数组与js数组比较

 

 在js创建数组

两种方式

1: var arr = new Array(1,2,3,4);

2: var arr = [1,2,3];

 

在PHP中创建数组

$arr = array(1,2,3);

print_r($arr);

 

在js中,数组的索引永远是从0开始逐一递增,

中间没有空档.

 

但是在PHP中, 数组的索引是非常灵活的.

可以是数字,也可以是字符串,

 

如果索引部分指定了数字索引,

又有某个单元没有指定索引,

则取该单元之前曾经出现的最大的数字索引值,

然后+1,作为其键值

 

$arr = array(10=>'赵',13=>'钱','孙',99=>'李','name'=>'张三丰','dsafdsafdsaf'=>'来了');

print_r($arr);

 

在PHP中,如何引用数组的单元值

关键靠索引,

而索引又有"数字","字符串"

 

如果是数字索引

echo $arr[10];

 

如果是字符串索引,必须把索引用''包起来

 

define('name','dsafdsafdsaf');

echo $arr[name];

echo $arr['name'];

 

关联数组与索引数组

 

索引既可能是纯数字,也可能是纯字符串,也有可能是字符串+数字混合

 

如果索引是纯数字,就叫 "索引数组"

否则就叫 "关联数字"

 

PHP函数

函数的执行权: 从调用函数开始, 语句的执行权进入到函数内部.

函数什么时间交出执行权: 当函数结束的时候. 当函数执行到最后一个语句,或者是遇到return语句.

 

函数的命名规范:

变量:可以由字母,数字,下划线组成,但是不能以数字开头.

常量:同变量,但,一般大写.

函数:和变量一样.

 

大小写: 变量区分大小写,而函数不区分大小写,

但是一般推荐在调用函数时,和声明函数时保持一致.

 

 

函数的参数的赋值方式

函数的赋值方式,类似于变量的赋值,也分传值赋值, 和引用赋值.

 

对于传值赋值,是指把实参复制一份给形参,因此,函数内部对形参处理后,

并不影响外部传入的实参.

 

而引用赋值,是指,把实参的地址传给形参,

因此,本质上,函数内部的形参,与外部的实参,指向一个内存地址.

因此,函数内部对形参的操作,将会影响到实参.

 

PHP里,如何允许以引用传值形式,调用函数,配置哪个选项?

allow_call_time_pass_reference

 

 

函数的实参与形参是如何分配的?

Function foo ($arg1,$arg2,$arg3);

当调用的时候, 不管形参有没有默认值,

Foo(1,2,3,4,5), 实参按顺序依次赋给形参.

如果实参多于形参的个数,多余的实参自动抛弃.

 

但是, 如果按顺序分配实参后, 实参的数量小于形参,而没得到值的形参,又没有声明默认值.

将会报错.

 

函数允许没有参数,也允许没有返回值.

 

在PHP里,函数不能重写定义,会报redeclare错误.

已定义的函数也不能被清除掉.

 

PHP中的函数与js中的函数的不同之处

1: 在js中,可以多次声明同名函数 //  但是在一个PHP页面中,不能多次同名函数

function t() { }

function t() { }

 

2: 在js中,函数名区分大小写

在PHP中, 函数名不区分大小写(类方法也不区分)

function t() {

    echo 'aaa'; }

T();

 

3: 在PHP中,调用函数时的参数个数必须与声明函数的参数一致. 

在js中可能见这种情景:

function t(arg1,arg2,arg3) { }

t(99);

 

在PHP中

function t($a,$b,$c) {

    echo $a + $b + $c; }

t(1,2,3);

t(1,2); //错

 

// 4: 在PHP的函数,函数声明时,某个参数可以有"默认值"

function t($a,$b,$c=9) {

    echo $a + $b + $c; }

t(1,2,3);

t(1,2);