热搜:NVER node 开发 php

php array 处理函数

2024-08-12 11:40:02
php array 处理函数

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).'
'
;
     }
    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) . "
/n"; 
// "step one"

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

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

?>

 

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

each

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

说明

array   each  ( array &array )

返回 array 数组中当前指针位置的键/值对并向前移动数组指针。键值对被返回为四个单元的数组,键名为 0,1,key 和 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()