0
点赞
收藏
分享

微信扫一扫

php 二维如何控制数组 输出的层数

展开全部
  具体分析如下:
  先来看看下面程序运行结果:
  代码如下:
  $numb=array(
  array(10,15,30),array(10,15,30),array(10,15,30)
  );
  echo
  count($numb,1);
  A.3
  B.12
  C.6
  D.9
  答案是B
  count函数中如果mode被设置为
  COUNT_RECURSIVE(或 1),则会递归底计算多维数组中的数组的元素个数(也就是你结果的12)。如果不设置mode默认为0
  。不检测多维数组(数组中的数组)(结果3)。
  首先遍历的是外面的数组array得出有两个元素("color1″,"color2″,"color3″)
  为3
  再遍历("color1″,"color2″,"color3″)数组得出的是9个元素 为9
  结果就是3+9=12
  参考示例:
  代码如下:
  $fruits=array (
  array (1,
  2,null,null, 5, 6),
  array (1, 2,null,null, 5,
  6),
  );
  echo(count($fruits[0]));
  ?>
  如果用其它方式定义的数组,比如:
  代码如下:
  $fruits[0][0]=1;
  $fruits[0][3]=1;
  $fruits[0][4]=1;
  echo(count($fruits[0]));
  ?>
  这样那就输出3,因为php中的数组不要求索引必须连续,参考手册上有如下一段:
  数组:
  PHP 中的数组实际上是一个有序图。
  图是一种把 values 映射到 keys
  的类型。此类型在很多方面做了优化,因此可以把它当成真正的数组来使用,或列表(矢量),散列表(是图的一种实现),字典,集合,栈,队列以及更多可能性。
  因为可以用另一个
  PHP 数组作为值,也可以很容易地模拟树。
  实例:
  获得二维或多维数组的第一维的长度,这是个常用的程序判断,比如读取的数组是一个二维数组:
  代码如下:
  $arr=array(
  0=>array('title'
  => '新闻1', 'viewnum'=> 123, 'content'=>
  'ZAQXSWedcrfv'),
  1=>array('title'=> '新闻2', 'viewnum'=> 99,
  'content'=>
  'QWERTYUIOPZXCVBNM')
  );
  ?>
  如果想统计数组$arr的长度,也就是说该二维数组只有两条新闻,想要的数字也是2,但是如果使用count($arr)不同版本的php,统计的结果是不一样的;
  后来在php手册中发现,count函数还有第二个参数,解释如下:
  count函数有两个参数:
  0(或COUNT_NORMAL)为默认,不检测多维数组(数组中的数组);
  1(或COUNT_RECURSIVE)为检测多维数组,
  所以如果要判断读取的数组$arr是不是有新闻信息,就要这样写了:
  代码如下:
  if(is_array($arr) &&
  count($arr,COUNT_NORMAL)>0 )
  {
  .....
  } else {
  .....
  }
  ?>
  可以使用这样的代码来测试该函数:
  代码如下:
  $arr=array(
  0=>array('title'
  => '新闻1', 'viewnum'=> 123, 'content'=>
  'ZAQXSWedcrfv'),
  1=>array('title'=> '新闻2', 'viewnum'=> 99,
  'content'=> 'QWERTYUIOPZXCVBNM')
  );
  echo
  '不统计多维数组:'.count($arr,0);//count($arr,COUNT_NORMAL)
  echo
  "
";  echo
  '统计多维数组:'.count($arr,1);//count($arr,COUNT_RECURSIVE)
  ?>

举报

相关推荐

0 条评论