
正文
php遍历数据key php遍历数据库字段
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
PHP 怎么样遍历
第一、foreach()
foreach()是一个用来遍历数组中数据的最简单有效的方法。
?php
$urls= array('aaa','bbb','ccc','ddd');
foreach ($urls as $url){
echo "This Site url is $url! br /";
}
?
显示结果:
This Site url is aaa
This Site url is bbb
This Site url is ccc
This Site url is ddd
第二、while() 和 list(),each()配合使用。
?php
$urls= array('aaa','bbb','ccc','ddd');
while(list($key,$val)= each($urls)) {
echo "This Site url is $val.br /";
}
?
显示结果:
?
This Site url is aaa
This Site url is bbb
This Site url is ccc
This Site url is ddd
第三、for()运用for遍历数组
?php
$urls= array('aaa','bbb','ccc','ddd');
for ($i= 0;$i count($urls); $i++){
$str= $urls[$i];
echo "This Site url is $str.br /";
}
?
显示结果:
This Site url is aaa
This Site url is bbb
This Site url is ccc
This Site url is ddd
这几种遍历数组的方法哪个更快捷些呢,下面做个简单的测试就明白了
=========== 下面来测试三种遍历数组的速度 ===========
一般情况下,遍历一个数组有三种方法,for、while、foreach。其中最简单方便的是foreach。下面先让我们来测试一下共同遍历一个有50000个下标的一维数组所耗的时间。
?php
$arr= array();
for($i= 0; $i 50000; $i++){
$arr[]= $i*rand(1000,9999);
}
function GetRunTime()
{
list($usec,$sec)=explode(" ",microtime());
return ((float)$usec+(float)$sec);
}
######################################
$time_start= GetRunTime();
for($i= 0; $i count($arr); $i++){
$str= $arr[$i];
}
$time_end= GetRunTime();
$time_used= $time_end- $time_start;
echo 'Used time of for:'.round($time_used, 7).'(s)br /br /';
unset($str, $time_start, $time_end, $time_used);
######################################
$time_start= GetRunTime();
while(list($key, $val)= each($arr)){
$str= $val;
}
$time_end= GetRunTime();
$time_used= $time_end- $time_start;
echo 'Used time of while:'.round($time_used, 7).'(s)br /br /';
unset($str, $key, $val, $time_start, $time_end, $time_used);
######################################
$time_start= GetRunTime();
foreach($arr as$key= $val){
$str= $val;
}
$time_end= GetRunTime();
$time_used= $time_end- $time_start;
echo 'Used time of foreach:'.round($time_used, 7).'(s)br /br /';
?
测试结果:
Used time of for:0.0228429(s)
Used time of while:0.0544658(s)
Used time of foreach:0.0085628(s)
结果表明,对于遍历同样一个数组,foreach速度最快,最慢的则是while。从原理上来看,foreach是对数组副本进行操作(通过拷贝数组),而while则通过移动数组内部指标进行操作,一般逻辑下认为,while应该比foreach快(因为foreach在开始执行的时候首先把数组复制进去,而while直接移动内部指标。),但结果刚刚相反。原因应该是,foreach是PHP内部实现,而while是通用的循环结构。所以,在通常应用中foreach简单,而且效率高。在PHP5下,foreach还可以遍历类的属性。
希望能够喜欢。
相关问答
Q1: 使用php Memcache模块如何正确遍历所有KEY以及VALUE
在php提供的用于与memcached交互的扩展模块中有memcached与memcache,前者提供方法getAllKeys用于遍历所有Memcached服务器上的key,但是并不保证原子操作,而后者却没有提供任何方法,虽然在PHP官方
文档中有人给出使用方法getExtendedStats来间接获取Memcached服务器上的所有key,但是给出的代码是有不少坑的,如果拿来就用,对于cluster的memcached服务器而言,有些问题就需要指出来。
下面将给出官方文档中的代码,并指出可能面临的问题,代码如下:
?php
/*\*
* Function to get all memcache keys
* @author Manish Patel
* @Created: 28-May-2010
\*/
function getMemcacheKeys() {
$memcache = new Memcache;
$memcache-connect('127.0.0.1', 11211) or die ("Could not connect to memcache server");
$list = array();
$allSlabs = $memcache-getExtendedStats('slabs');
$items = $memcache-getExtendedStats('items');
foreach($allSlabs as $server = $slabs) {
foreach($slabs AS $slabId = $slabMeta) {
$cdump = $memcache-getExtendedStats('cachedump',(int)$slabId);
foreach($cdump AS $keys = $arrVal) {
foreach($arrVal AS $k = $v){
echo $k ."br";
}
}
}
}//EO getMemcacheKeys() ?
在上述代码中,如果用于获取单个memcached服务器上的key,是不存在任何问题,但是获取连接池中的多个memcached所有key就存在问题,会发现打印出重复的key,问题就在于当使用getExtendedStats用去特定$slabID
上的信息时,返回的是连接池中所有的服务器上的特定$slabId 的存储的keys信息。当$server为"127.0.0.1:11214"且$slabId为0将变量$cdump的信息打印出如下所示:
array(2) {
["127.0.0.1:11214"]=
array(1) {
["course_schools__??¨é?¨"]=
array(2) {
[0]=
string(1) "0" [1]=
string(10) "12" }
}
["127.0.0.1:11216"]=
array(1) {
["monitorMemcache"]=
array(2) {
[0]=
string(2) "10" [1]=
string(10) "12" }
}
}
当$server为"127.0.0.1:11216"且$slabId为0将变量$cdump的信息打印出如下所示:
array(2) {
["127.0.0.1:11214"]=
array(1) {
["course_schools__??¨é?¨"]=
array(2) {
[0]=
string(1) "0" [1]=
string(10) "12" }
}
["127.0.0.1:11216"]=
array(1) {
["monitorMemcache"]=
array(2) {
[0]=
string(2) "10" [1]=
string(10) "12" }
}
}
Q2: PHP遍历键值对数组
可以遍历两次$a, 第一次取出所有的父级栏目,放入$newarr中,第二次将子栏目放入对应
的父级栏目数组中, 最后使用$newarr就行
不过这是建立在只有二级栏目的基础上,如果有三级栏目的话就还要麻烦些了
$newarr = array();
foreach ($a as $key = $value)
{
if($value['fID'] == 0)
{
$cid = $value['cID'];
$newarr[$cid] = $value;
unset($a[$key]);
}
}
foreach ($a as $key = $value)
{
if($value['fID'] != 0)
{
$fid = $value['fID'];
$newarr[$fid]['zilanmu'][] = $value;
}
}
php遍历数据key的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于php遍历数据库字段、php遍历数据key的信息别忘了在本站进行查找喔。







