PHP专题-PHP数组(续)
16.取得关联数组的键名
$province=array("LiaoNing"=>"shenyang","HeiLongJiang"=>"Haerbin","JiLin"=>"Changchun"); while ($key=key($province)){ echo $key."<br>"; next($province);//使用next函数数组索引指针下移一位 } ?>
17.访问数组的键名和元素
<?php $countries_languages =array('China'=>'汉语','France'=>'法语','USA'=>'美国英语'); printf("<p>语言:%s.</p>\n", implode(',',array_values($countries_languages))); printf("<p>国家:%s.</p>\n", implode(',',array_keys($countries_languages))); ?>
18.判断数组的类型
<?php function isAssocArray($array){ //是否为数组 if(!is_array($array)){ return false; } //处理键名 $keys=array_keys($array); $tries=count($keys); if ($tries>4){ $tries=4; } for ($i=0;$i<$tries;$i++){ //根据键名是否是数字 if (!is_int($keys[$i])){ return true; } } return false; } //索引数组 $array_one=array( 'http://www.google.cn', 'http://www.baidu.com' ); //关联数组 $array_two=array( 'Google'=>'http://www.google.cn', 'Baidu'=>'http://www.baidu.com' ); if (isAssocArray($array_one)){ echo "\$array_one是关联数组<br>"; }else { echo "\$array_one不是关联数组<br>"; } if (isAssocArray($array_two)){ echo "\$array_two是关联数组<br>"; } ?>
19.显示数组内容与结构
<?php $customers=array( array('account'=>'raymond','name'=>'杜江', 'age'=>28,'state'=>'×××'), array('account'=>'lilia','name'=>'琳琳', 'age'=>23,'state'=>'×××'), array('account'=>'guojing','name'=>'郭靖', 'age'=>36,'state'=>'宋朝'), ); printf("print_r()函数:<pre>",print_r($customers,TRUE)); printf("var_export()函数:<pre>%s</pre>",var_export($customers,TRUE)); print 'var_dump()函数:<pre>'; var_dump($customers); print '</pre>'; ?>
20.移除数组中的指定元素
<?php $dogs=array('Lassie'=>'Collie','Bud'=>'Sheepdog', 'Rin-Tin-Tin'=>'German Shepherd','Snoopy'=>'Beagle'); printf("<pre>%s</pre>\n",var_export($dogs,TRUE)); //移除R-Tin-Tin这个数组元素 unset($dogs['Rin-Tin-Tin']); printf("<pre>%s</pre>\n",var_export($dogs,TRUE)); ?>
21.在数组顶部插入元素
<?php $prices=array(5.95,10.75,11.25); echo "原数组内容:<br><pre>"; print_r($prices); echo "<br>"; //在该数组的顶部增加一个值 array_unshift($prices, 10.85); echo "</pre>使用array_unshift增加了10.85的值:<br></pre>"; print_r($prices); echo "<br>"; array_unshift($prices, 3.35,17.95); echo "</pre>使用array_unshift又增加了3.35,17.95两个值:<br><pre>"; print_r($prices); ?>
22.在数组任意位置插入元素
<?php function array_insert(&$array,$offset,$new){ array_splice($array, $offset,0,$new); } $unscl=array('中国','法国','美国','英国'); printf("<pre>%s</pre>\n",var_export($unscl,TRUE)); array_insert($unscl, 2, '俄罗斯'); printf("<pre>%s</pre>\n",var_export($unscl,TRUE)); ?>
23.数组元素的统计count()函数和sizeof()函数
<?php $dogs=array('Lassie'=>'Collie','Bud'=>'Sheepdog','Rin-Tin-Tin'=>'Alsatian'); $brids=array('parrot','magpie','lorakeet','cuckoo'); echo count($dogs).""; echo sizeof($brids); ?>
24.数组键名与值的对调array_flip()函数
<?php $arry=array( 'a'=>1, 'b'=>2, 'c'=>3 ); $flip_array=array_flip($arry); print_r($arry); ?>
25.对数组元素分组统计array_values()函数
<?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_values($countries); $language_count=array(); foreach ($languages as $language){ if (!isset($language_count[$language])){ $language_count[$language]=1; }else { $language_count[$language]++; } } ?> <table border="2" cellpadding="5" cellspacing="0" align="center"> <tr><th>语言</th><th>国家数</th></tr> <?php foreach ($language_count as $language => $number){ echo "<tr><td>$language</td><td>$number</td></tr>\n"; } ?><?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_values($countries); $language_count=array(); foreach ($languages as $language){ if (!isset($language_count[$language])){ $language_count[$language]=1; }else { $language_count[$language]++; } } ?> <table border="2" cellpadding="5" cellspacing="0" align="center"> <tr><th>语言</th><th>国家数</th></tr> <?php foreach ($language_count as $language => $number){ echo "<tr><td>$language</td><td>$number</td></tr>\n"; } ?>
26.数组内容过滤
<?php function array_display($array,$pre=FALSE){ $tag =$pre ? 'pre' : 'p'; printf("<%s>%s<%s>\n",$tag,var_export($array,TRUE),$tag); } $arr=array(2,'two',0,'NULL',NULL,'FALSE',FALSE,'empty',''); $copy=array_filter($arr); $reindexed=array_values($copy); print '<p>原始数组:</p>'; array_display($arr,TRUE); print '<p>过滤后的数组:</p>'; array_display($copy,TRUE); print '<p>过滤后和重新索引的数组</p>'; array_display($reindexed,TRUE); ?>