PHP current() end() prev() next() key() reset() each()数组指针处理函数

current

current -- 返回数组中的当前单元

说明

mixed   current  ( array &array )

每个数组中都有一个内部的指针指向它“当前的”单元,初始指向插入到数组中的第一个单元。

current() 函数返回当前被内部指针指向的数组单元的值,并不移动指针。如果内部指针指向超出了单元列表的末端,current() 返回 FALSE

 

警告

如果数组包含有空的单元(0 或者 "",空字符串)则本函数在碰到这个单元时也返回FALSE这使得用 current() 不可能判断是否到了此数组列表的末端。要正确遍历可能含有空单元的数组,用 each() 函数。

 

 

例 1. current() 及相关函数的用法示例

<?php
$transport 
= array('foot', 'bike', 'car', 'plane'
);
$mode = current($transport); 
// $mode = 'foot';
$mode = next($transport);    
// $mode = 'bike';
$mode = current($transport); 
// $mode = 'bike';
$mode = prev($transport);    
// $mode = 'foot';
$mode = end($transport);     
// $mode = 'plane';
$mode = current($transport); 
// $mode = 'plane';
?>

 

-------------------------------------------------------------------------------------------------------

end

end -- 将数组的内部指针指向最后一个单元

说明

mixed   end  ( array &array )

end()  array 的内部指针移动到最后一个单元并返回其值

 

例 1. 简单的 end() 例子

<?php
$fruits 
= array('apple','banana','cranberry'
);
echo 
end($fruits); 
// cranberry
?>

 

-------------------------------------------------------------------------------------------------------

prev

prev -- 将数组的内部指针倒回一位

说明

mixed   prev  ( array &array )

返回数组内部指针指向的前一个单元的值,或当没有更多单元时返回 FALSE

 

警告

如果数组包含空的单元,或者单元的值是 0 则本函数碰到这些单元也返回 FALSE。要正确遍历可能含有空单元或者单元值为 0 的数组,参见 each() 函数。

 

prev()  next() 的行为类似,只除了它将内部指针倒回一位而不是前移一位。

 

例 1. prev() 及相关函数用法示例

<?php
$transport 
= array('foot', 'bike', 'car', 'plane'
);
$mode = current($transport); 
// $mode = 'foot';
$mode = next($transport);    
// $mode = 'bike';
$mode = next($transport);    
// $mode = 'car';
$mode = prev($transport);    
// $mode = 'bike';
$mode = end($transport);     
// $mode = 'plane';
?>

 

-------------------------------------------------------------------------------------------------------

next

next -- 将数组中的内部指针向前移动一位

说明

mixed   next  ( array &array )

返回数组内部指针指向的下一个单元的值,或当没有更多单元时返回 FALSE

next()  current() 的行为类似,只有一点区别,在返回值之前将内部指针向前移动一位。这意味着它返回的是下一个数组单元的值并将数组指针向前移动了一位。如果移动指针的结果是超出了数组单元的末端,则 next() 返回 FALSE

 

警告

如果数组包含空的单元,或者单元的值是 0 则本函数碰到这些单元也返回 FALSE。要正确遍历可能含有空单元或者单元值为 0 的数组,参见 each() 函数。

 

 

例 1. next() 及相关函数的用法示例

<?php
$transport 
= array('foot', 'bike', 'car', 'plane'
);
$mode = current($transport); 
// $mode = 'foot';
$mode = next($transport);    
// $mode = 'bike';
$mode = next($transport);    
// $mode = 'car';
$mode = prev($transport);    
// $mode = 'bike';
$mode = end($transport);     
// $mode = 'plane';
?>

 

-------------------------------------------------------------------------------------------------------

key

key -- 从关联数组中取得键名

说明

mixed   key  ( array &array )

key() 返回数组中当前单元的键名。

 

例 1. key() 例子

<?php
$array 
= array(
'fruit1' => 'apple'
,
'fruit2' => 'orange'
,
'fruit3' => 'grape'
,
'fruit4' => 'apple'
,
'fruit5' => 'apple'
);

// this cycle echoes all associative array
// key where value equals "apple"
while ($fruit_name = current($array
)) {
     if (
$fruit_name == 'apple'
) {
         echo 
key($array).'<br />'
;
     }
    
next($array
);
}
?>

 

-------------------------------------------------------------------------------------------------------

reset

reset -- 将数组的内部指针指向第一个单元

说明

mixed   reset  ( array &array )

reset()  array 的内部指针倒回到第一个单元并返回第一个数组单元的值,如果数组为空则返回 FALSE

 

例 1. reset() 例子

<?php

$array 
= array('step one', 'step two', 'step three', 'step four'
);

// by default, the pointer is on the first element
echo current($array) . "<br />/n"; 
// "step one"

// skip two steps
next($array
);
next($array
);
echo 
current($array) . "<br />/n"; 
// "step three"

// reset pointer, start again on step one
reset($array
);
echo 
current($array) . "<br />/n"; 
// "step one"

?>

 

-------------------------------------------------------------------------------------------------------

each

each -- 返回数组中当前的键/值对并将数组指针向前移动一步

说明

array   each  ( array &array )

返回 array 数组中当前指针位置的键/值对并向前移动数组指针。键值对被返回为四个单元的数组,键名为 01key  value。单元 0  key 包含有数组单元的键名,1  value 包含有数据

如果内部指针越过了数组的末端,则 each() 返回 FALSE

 

例 1. each() 例子

<?php
$foo 
= array("bob", "fred", "jussi", "jouni", "egon", "marliese"
);
$bar = each($foo
);
print_r($bar
);
?>

$bar 现在包含有如下的键/值对:

Array
{
    [1] => bob
    [value] => bob
    [0] => 0
    [key] => 0
}

 

 

 

<?php
$foo 
= array("Robert" => "Bob", "Seppo" => "Sepi"
);
$bar = each($foo
);
print_r($bar
);
?>

$bar 现在包含有如下的键/值对:

Array
{
    [1] => Bob
    [value] => Bob
    [0] => Robert
    [key] => Robert
}

 

 

each() 经常和 list() 结合使用来遍历数组,例如:

例 2. 用 each() 遍历数组

<?php
$fruit 
= array('a' => 'apple', 'b' => 'banana', 'c' => 'cranberry'
);
reset($fruit
);
while (list(
$key, $val) = each($fruit
)) {
     echo 
"$key => $val/n"
;
}
?>

上例将输出:

a => apple
b => banana
c => cranberry

 

在执行 each() 之后,数组指针将停留在数组中的下一个单元或者当碰到数组结尾时停留在最后一个单元。如果要再用 each 遍历数组,必须使用 reset()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值