<?php

header("Content-Type: text/html; charset=UTF-8");

$arr=array('春','夏','秋','冬');

//1 数组遍历的常规方法   
//  该方法只能对索引数组(下标为数字的)好使,对于关联数字(字符串下标)不能用
echo '一:<h2>PHP  常规for循环数组 <em>适用:索引数组</em></h2>';
for($i=0,$len=count($arr);$i<$len;$i++){
echo $arr[$i];
}
//2. foreach遍历数组
echo '<h2>二:PHP  foreach用法  <em>适用:索引和关联数组</em></h2>';

foreach($arr as $k=>$v){
echo $k,'~~~~',$v,'<br/>';
}

foreach($arr as $v){
echo '~~~~',$v;
}

echo '<hr/>';

//4.  list 用法  list不会重置指针
echo '<h2>三:PHP  list用法   不会重置指针 list左侧分别对应右侧数则(设为$arr) $arr[0] $arr[1]...$arr[n] 从左到右对应,然后从右到左赋值<em>适用:索引数组、关联数组得注意使用</em></h2>';
list($spring,$summer,$autumn,$winter)=$arr;
echo $spring,$summer,$autumn,$winter;
reset($arr);  //重置数组指针,指向第一个单元


//3. 
//each遍历数组  注意each不会对指针进行重置

echo '<h2>四:PHP  each打印的格式</h2>';
print_r(each($arr));  //Array ( [1] => 春 [value] => 春 [0] => 0 [key] => 0 )
echo '<br />';
reset($arr);  //重置数组指针

echo '<h2>PHP  each用法 <em>适用:索引和关联数组</em></h2>';

while($ceil=each($arr)){
//echo  $ceil[1],'<br/>';
echo  $ceil['value'],'<br/>';
}
if(each($arr)==false){
echo '指针已到最后了';
reset($arr);
};

//5.
echo '<h2>五:current next数组指针 end(),key(),next(),prev() 和 reset()。  <em>适用:索引和关联数组</em></h2>';
echo current($arr);
echo next($arr);
echo prev($arr);
echo end($arr);
reset($arr);
echo current($arr);

//6.
echo '<h2>六:PHP  key方法 <em>适用:索引数组</em></h2>';

$array = array(
'fruit1' => 'apple',
'fruit2' => 'orange',
'fruit3' => 'grape',
'fruit4' => 'apple',
'fruit5' => 'apple');
while($v=current($array)){
if($v=='orange'){//获取 value为orange的key,键名
  echo key($array);
}
next($array);
}

?>