在php数组函数中,each()函数返回input_array的当前键/值对,并将指针推进一个位置。
形式如下:
array each(array array)
返回的数组包含四个键,键0和key包含键名,而键1和value包含相应的数据。
如果执行each()前指针位于数组末尾,则返回false。
例如:
<?php $fruits = array("apple", "banana", "orange", "pear"); print_r ( each($fruits) ); // Array ( [1] => apple [value] => apple [0] => 0 [key] => 0 ) ?>
each() 经常和 list() 结合使用来遍历数组。
例子,循环输出整个数组:
<?php $fruits = array("apple", "banana", "orange", "pear"); reset($fruits); while (list($key, $val) = each($fruits)) { echo "$key => $val<br />"; } //by www. // 0 => apple // 1 => banana // 2 => orange // 3 => pear ?>
由于将一个数组赋值给另一个数组时会重置原来的数组指针,因此在上例中如果我们在循环内部将 $fruits 赋给了另一个变量的话将会导致无限循环。
由此完成数组的遍历。
在php数组函数中,array_values()()函数返回一个数组中的所有值,并自动为返回的数组提供数值索引。
其形式如下:
array array_values(array array)
例子,获取$fruits中找到的各元素的值:
<?php //获取数组中各元素的值 //by www. $fruits["apple"] = "red"; $fruits["banana"] = "yellow"; $fruits["watermelon"]="green"; $values = array_values($fruits); print_r($values); //Array ( [0] => red [1] => yellow [2] => green ) ?>
有时需要扩展一个数组,或者删掉数组的一部分,PHP为扩展和缩小数组提供了一些函数。
对于那些希望模仿各种队列实现(FIFO、LIFO)的程序员来说,这些函数可以提供便利。
顾名思义,从这些函数的函数名(push、pop、shift和unshift)就清楚地反映出其作用。
小贴士:
传统的队列是一种数据结构,删除元素与加入元素的顺序相同,就称为先进先出,或FIFO。
相反,栈是另外一种数据结构,其中删除元素的顺序与加入时的顺序相反,这成为后进先出,或LIFO。
在php数组函数中,key()函数返回input_array中当前指针所在位置的键。
其形式如下:
mixed key(array array)
例子,通过迭代处理数组并移动指针来输出$fruits数组的键:
<?php //获取数组的键 //by www. $fruits = array("apple"=>"red", "banana"=>"yellow"); while ($key = key($fruits)) { printf("%s <br />", $key); next($fruits); } //output : // apple // banana ?>
注意,每次调用key()时不会移动指针。
因此,需要使用next()函数,此函数的唯一作用是完成推进指针的任务。
再举一个例子,供大家参考:
<?php //PHP获取数组的键名与键值 //by www. array_keys($array) //返回所有键名 array_values($array) //返回所有键值 $result=array_reverse($input); //将数组颠倒,不保留键名 $result_keyed=array_reverse($input,true); //将数组颠倒,保留键名 array_keys($array,"blue"); //返回值为blue的键名 ?>