遍历数组

遍历数组
 在这里介绍的是遍历数组,一共有几种方法 和在遍历数组中存在的问题(如:你要遍历的可能不是数组所以要进行判断
 之后进行处理 或强制转换成数组进行统一处理)

问题:
你想要循环遍历一个数组,并对其中的全部或部分元素进行操作.

方案:
1: 使用foreach语句:
  foreach( $array as $value )
  {
   //操作
  }  
 或者同时取得数组的键和值
  foreach( $array as $key=>$value )
  {
   //操作
  }
  
2:使用for语句
  for( $key = 0,$size = count( $array ); $key <$size; $key++ )
  {
   //操作
  }
  
  最后,还可以在list() 函数 与while语句的组合中使用each()函数:
  reset($array) //将内部指针复位于数组的第一个元素处
  while(list($key , $value)=each($array) )
  {
   //操作
  }
讨论:
 在迭代数组元素时使用foreach语句更简洁一些
  foreach( $array as $value )
  {
   //操作
  }  
 或者同时取得数组的键和值
  foreach( $array as $key=>$value )
  {
   //操作
  }
在使用foreach语句时,PHP迭代的是相应数组的一个副本,而非数组本身.相反地,在使用each()函数和for语句时,PHP迭代
的是原始数组.如果你要在循环内部修改数组,就应该选择某种方式 .

reset($items)
while(list($item , $cost) = each($items) )
{
 if( !in_stock($item) )
 {
  //unset — 释放给定的变量
  /*unset() 销毁指定的变量。注意在 PHP 3 中,unset() 将返回 TRUE(实际上是整型值 1),
  而在 PHP 4 中,unset() 不再是一个真正的函数:它现在是一个语句。
  这样就没有了返回值,试图获取 unset() 的返回值将导致解析错误。 */
  
  unset($items[$item]);  
 }
}
each() 返回的变量不是数组中的原始值,而是原始值的副本,所以如果你修改这个变量,不会景响原始数组.这正是
要修改$items[$item]而不是$item的原因所在.

在使用each()函数时,PHP会跟踪循环的位置.当完成第一次循环后,再重新调用reset()函数将指针复位.如果指针
越过了数组的末端each()返回false.

for循环只能用于使用连续整数作为键的数组.除非你在同时修改数组的大小.否则如果每次循环都要重新计算$times的
大小会影响效应,所以应该用一个$size变量来保存数组的大小值:
for($item = 0 , $size = count($items ); $item < $size; $item++)
{
 .......
}
如果你更喜欢用一个变量来计数,可以使用倒计法:
for($item = count($items) - 1; $item >= 0; $item--)
{
......
}
在不能确定要处理的数据是一个变量还是一个数组的情况下,需要避免对一个非数组变量使用foreach()语句.
方法1:  使用  is_array() 函数判断 是不是数组
  if( is_array( $items ) )
  {
  ....
  }
  else
  {
   ...
  }
方法二:强制转换为数组settype()函数将所有变量都强制转换为数组形式:
    settype($items,'array');
    这方法会把标量值转换成一个单元素数组,虽然增加了一些系统开销,但能使代码更清晰.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值