PHP数组
数组的类型
1.数字索引数组
PHP数字索引组默认索引值是从数字0开始的,并不需要特别指定,PHP会知道为索引的键名赋一个值,然后从这个值开始自动增量
- <?php
- $name=array("raymond","lilila","tony");
- echo "{$name[0]}和{$name[1]}和{$name[2]}";
- ?>
2.关联数组
关联数组的键名可以是数值和字符串混合的形式,而不像数字索引数组的键名只能为数字,在一个数组中,只要键名中有1个不是数字,那么这个数组就叫做关联数组
- <?php
- //创建一个关联数组$newArray
- $newArray=array("first"=>1,"2"=>"第二个元素的值","third"=>3);
- //修改third的值
- $newArray["third"]=5;
- echo $newArray["third"];
- ?>
数组的构造
1.一维数组
- <?php
- $info[0]='A';
- $info[1]='B';
- $info['abc']='C';
- echo $info[0].$info[1].$info["abc"];
- ?>
2.二维数组与多维数组
- <?php
- $company=array(
- array('CompanyID'=>'1001',
- 'Companyname'=>'Ganji.com',
- 'Address'=>'北京清华科技园'
- ),
- array('CompanyID'=>'1002',
- 'Companyname'=>'Ganji.com',
- 'Address'=>'北京清华科技园'
- ),
- array('CompanyID'=>'1003',
- 'Companyname'=>'Ganji.com',
- 'Address'=>'北京清华科技园'
- )
- );
- print_r($company);
- ?>
3.快速创建数组
使用range()函数
- <?php
- $testArray=range(0,6);
- print_r($testArray);
- ?>
- =============
- <?php
- $even=range(0,10,3);//其中3表示递增的步长
- print_r($even);
- ?>
4.为数组追加数据
- <?php
- //建立一个新的空数组,將一个变量指定为数组类型
- $languages=array();
- //增加3个元素
- $languages[]='汉语';
- $languages[]='法语';
- $languages[]='英语';
- printf("<p>语言:%s.</p>\n",implode(',',$languages));
- ?>
5.修改数组内容
- <?php
- //建立一个新的空数组,將一个变量指定为数组类型
- $languages=array();
- //增加3个元素
- $languages[]='汉语';
- $languages[]='法语';
- $languages[]='英语';
- printf("<p>语言:%s.</p>\n",implode(',',$languages));
- $languages[2]='东北话';
- printf("<p>语言:%s.</p>\n",implode(',',$languages));
- ?>
6.数字索引数组排序
- <?php
- $states=array("中国","China","香港","Hongkong");
- sort($states);
- print_r($states);
- ?>
7.关联数组排序
- <?php
- $states=array("LN"=>"LiaoNing","BJ"=>"BeiJing","SH"=>"ShangHai");
- echo 'asort():按数组关联性排序:<br>';
- asort($states);
- print_r($states);
- echo 'krsort():按数组的索引值降序排序:<br>';
- ksort($states);
- print_r($states);
- ?>
8.数组随机抽取shuffle()和array_rand()
- <?php
- $cards=array("1","2","3","4","5","6");
- //把$cards数组打乱
- shuffle($cards);
- print_r($cards);
- ?>
- ----------------
- <?php
- $arry=array('A','B','C','D');
- $result=array_rand($arry);
- //显示$array中随机产生的索引值元素
- echo $arry[$result];
- ?>
9.统计数组元素出现的次数
array_count_values()
- <?php
- $province=array("Shanghai","Liaoning","Guangdong","Liaoning","Beijing");
- $provinceFrequency=array_count_values($province);
- print_r($provinceFrequency);
- ?>
10.数据合并array_merge
- <?php
- $array_a=array(
- 1=>'新浪网',
- 2=>'搜狐网',
- 3=>'网易',
- 4=>'新华网'
- );
- $array_b=array(
- '82'=>'优酷网',
- 85=>'新华网',
- 87=>'六间房',
- 90=>'土豆网'
- );
- //两个数组的简单合并可以使用加号(+)操作符直接合并,如:
- $array_c=$array_a+$array_b;
- print_r($array_c);
- $array_d=array_merge($array_a,$array_b);
- print_r($array_d);
- ?>
11.查找数组中键名是否存在
- <?php
- $state["LN"]="沈阳";
- $state["BJ"]="北京";
- $state["SH"]="上海";
- if (array_key_exists("LN", $state)){
- echo "辽宁省的省会在$state[LN]";
- }
- ?>
12.查找数组值是否存在
- <?php
- $grades=array(100.94,7,67,89,100);
- if (in_array("100", $grades)){
- echo "有的同学考试成绩达到了满分";
- }
- ?>
13.计算数组中数值元素的和
- <?php
- $grades=array(42,"hello",42);
- $total=array_sum($grades);
- print $total;
- ?>
14.去除数组中重复的元素值
- <?php
- $countries=array('USA'=>'English','Spain'=>'Spanish',
- 'China'=>'Chinese','UK'=>'English',
- 'Mexico'=>'Spanish','Germany'=>'German',
- 'Colombia'=>'Spanish','Canada'=>'English',
- 'Russia'=>'Russian','Austria'=>'German',
- 'France'=>'French','Argentina'=>'Spanish');
- //清理重复的数组元素
- $languages=array_unique($countries);
- printf("<pre>%s</pre>\n",var_export($languages,TRUE));
- //按索引值显示移除元素的数
- $languages=array_unique(array_values($countries));
- printf("<pre>%s</pre>\n",var_export($languages,TRUE));
- //重新索引排序
- $languages=array_unique(array_values($countries));
- printf("<pre>%s</pre>\n",var_export($languages,TRUE));
- ?>
15.移动数组内部指针
- <?php
- //候选的一堆数字索引数组,它保存了以下3列值
- $fruits=array("apple","orange","banana");
- print_r($fruits);
- $fruit=current($fruits);
- echo "当前的水果:$fruit<br>";
- $fruit=next($fruits);
- echo "下一个水果:$fruit<br>";
- $fruit=prev($fruits);
- echo "上一个水果:$fruit<br>";
- $fruit=current($fruits);
- echo "当前的水果:$fruit<br>";
- $fruit=end($fruits);
- echo "最后面的水果:$fruit<br>";
- ?>