打印本页
%08 %362 %2013 %15:%七 %PM

PHP数组处理

作者
给本项目评分
(0 得票数)

目标:

         本文研究的是PHP的数组操作,主要的目标是熟悉php的数组操作,感受PHP的数组和JavaScript的数组操作的不同。

 

正文:

1,解决第一个问题,数组的定义

  在PHP中数组是以键值对的形式存在的。也就是我们常说的下标。当然在PHP中默认的下标为0开始的自然数。也可以自定义

  我们用array函数来定义数组

$numbers = array (1,3,5,7,9);

print_r($numbers);

结果为:

Array
(
    [0] => 1
    [1] => 3
    [2] => 5
    [3] => 7
    [4] => 9
)


自定义键值对:
$langs = array(1=>"Eng",2=>"Chs",7=>"Cht","defaule");
print_r($langs);
输出的结果为:
Array
(
    [1] => Eng
    [2] => Chs
    [7] => Cht
    [8] => default
)
可以看出最后一个8是系统自动增加的

定义二维数组
$numbers = array("color"=>array("red","green"),
"freeing"=>array("good","bad","happy","sad"));

Array
(
    [color] => Array
        (
            [0] => red
            [1] => green
        )

    [feeling] => Array
        (
            [0] => good
            [1] => bad
            [2] => happy
            [3] => sad
        )

)


第二个问题 创建数组
compact()函数的功能是将多个变量转化为数组

$numbers ="1,3,5,7,9";
$string ="I am PHPer";

$array = array("And ","you ?");
$newArray = compact("numbers","string","array");

echo "<pre />";
print_r($newArray);
echo "<pre />";

输出的结果为:

Array
(
    [numbers] => 1,3,5,7,9
    [string] => I am PHPer
    [array] => Array
        (
            [0] => And 
            [1] => you ?
        )

)
//我们可以看到这个函数将这些变量组合成了一个数组。并且数组的键为变量的名称。数组的值为变量的值。并且也可以是数组变量。

array_combine()
该函数将两个数组组成一个数组,并且返回这个新的数组。该函数将第一个参数数组的值作为返回数组的键,第二作为返回数组的值。注意,第一个数组的长度和第二个数组的长度需要保持一致。不然会出现一个警告。

$numbers = array("1","5","9");
$array = array("I ","am","min","!");

$newArray = array_combine($numbers,$array);

运行的结果:

Array
(
    [1] => I 
    [5] => am
    [9] => min
)

range()函数创建指定范围的数组。

$newArray = range(0,100,10);
0 为起始值,100为结束值。10为步长。注意结果包括0 和100
执行的结果为:

Array
(
    [0] => 0
    [1] => 10
    [2] => 20
    [3] => 30
    [4] => 40
    [5] => 50
    [6] => 60
    [7] => 70
    [8] => 80
    [9] => 90
    [10] => 100
)
默认的步长为1.这个函数用起来应该非常的简单了

array_fill()填充数组函数。就是用第三个参数来填充一个数组的值。
array_fill_keys();用一个字符串来填充数组的键

$arrayFilled = array_fill(0,5,"test");
输出结果为:
Array
(
    [0] => test
    [1] => test
    [2] => test
    [3] => test
    [4] => test
)

$keys = array("string","2","8","SDK","PK");
$array2 = array_fill_keys($keys,"dddddddd");

输出的结果为:

Array
(
    [string] => dddddddd
    [2] => dddddddd
    [8] => dddddddd
    [SDK] => dddddddd
    [PK] => dddddddd
)


下面进入一个重要的问题就是数组的遍历:

1,foreach遍历
$speed = array(50,120,180,240,380);
foreach($speed as $key=>$values )
{
echo $keys."=>".$values."<br />";
}

输出的结果为:
0=>50
1=>120
2=>180
3=>240
4=>380

while循环遍历
while循环遍历一般结合list函数。

$staff = array(
array("姓名","性别","年龄"),
array("aaaa","m",24),
array("bbbb","wm",34),
array("CCCC","m",22),
array("DDDD","wm",23),
);

echo "<table border=2>";
while( list($key,$value) = each($staff) )
{
list($name,$sex,$age) = $value;
echo "<tr><td>$name</td><td>$sex</td><td>$age</td></tr>";
}
echo "</table>";

输出的结果为:

姓名 性别 年龄
aaaa m 24
bbbb wm 34
CCCC m 22
DDDD wm 23

for循环遍历


$speed = range(0,220,20);
for($i =0;$i<count($speed) ;$i++)
{
echo $speed[$i]." ";
}

这种访问最直接了

 

数组的指针操作

涉及的函数包括:reset  prev end next current  each

reset 重置数组的指针到开头

prev 将指针退回一个

end  将指针移动到最后

each 指针顺序向后移

 

使用比较容易,不再举例说明。

array_pad函数在数组的首尾选择性的追加元素。

该函数有三个参数 第一个参数是操作的数组,第二参数是数组的长度,第三个参数是添加的值。该函数的操作并不会改变原始数据,它会返回一个新的数据。

$num = array(1=>80,2=>120,3=>160);
$newNum = array_pad($num,4,200);

输出的结果为:newNum

Array
(
    [0] => 80
    [1] => 120
    [2] => 160
    [3] => 200
)
这个函数的意思是说数组至少有4个元素,如果原先的数组只有三个元素 ,那么就自动增加一个,让他达到4个,并且第四个的值为第三个参数。

如果为负数,那么就是说从头开始加。

 

array_push向数组的最后添加一个元素

array_unshift()在开头添加。使用了array_unshift函数后,数组的键值会从0开始。

 

unset() 删除一个数组成员或者一个数组。

array_splice($a ,startPos,num);删除数组中的元素。该函数删除下标为startPos的元素,一个num个

array_unique()删除数组中的重复值。该函数不会改变原始数组,而是返回执行的结果。

in_array()检查数组中是否存在摸一个值。

key()取得数组当前的键名。

list()函数把数组中的值赋给指定变量。

array_flip()交换数组的键值和值

array_search()搜索数值。该函数返回的值可能为false或者0或者NULL.所以判断的时候注意要用“===”

sort() rsort() asort()对数组进行排序。

shuffle()将数组的顺序打乱。

count($array )  统计数组的单元个数

array_diff($array1,$array2); 统计数组之间的不同点。返回第一个数组中有而第二个数组中没有的

array_diff_assoc($array1,$array2); 和array_diff一样,只是它对键值也比较。

array_diff_key ($array1,$arr)

array_product($array) 返回数组中所有数的乘积

array_sum($array); 返回数组中所有数的和

array_rand($array.$n); 在$array数组中取出$n个数值。返回数组。

array_intersect($array1,$array2);取得两个数组的交集。

 

 




阅读 4219 次数 最后修改于 %23 %650 %2014 %22:%二 %PM