//php仿造java定长数组: int[] source = new int[10]
$source = new SplFixedArray(10)
//$source[10] = 1这种会报错,因为超越了数组的边界,$source下标最大为9
//仿造java给数组元素默认赋值为0
for ($i=0$i <sizeof($source)$i++) {
$source[$i] = 0
}
//数组扩容为原来的1.5倍
$size = sizeof($source)
$destination = new SplFixedArray($size + ($size >>1))
for ($i=0$i <sizeof($source)$i++) {
$destination[$i] = $source[$i]
}
print_r($destination)
C的数组只相当于内存块。“规定数组长度”本质上是申请固定的内存空间。而PHP的数组相比高级高层太多,是动态数组、栈、散列表的综合体。
基本上PHP是没有场合需要预先规定数组长度。
如果要模拟c的占空间,可以生成一个有键的数组,比如模拟 int a[3]
可以
$a[0]=0
$a[1]=0
$a[2]=0
这一过程可以批量完成。但没有任何实用意义。
在php中获取数组长度方法很简单,php为我们提供了两个函数可以计算一维数组长度,如count,sizeof都可以直接统计数组长度哦,下面我们来看几个实例吧。php如何获取数组的长度,使用php函数count(),或是sizeof()
例如:
复制代码
代码如下:
$arr
=
Array('0','1','2','3','4')
echo
count($arr)
//
输出
5
$arr
=
array('A','B','C')
echo
sizeof($arr)
//输出3
sizeof()和count()具有同样的用途,这两个函数都可以返回数组元素个数.可以得到一个常规标量变量中的元素个数,如果传递给这个函数的数组是一个空数组,或者是一个没有经过设定的变量,返回的数组元素个数就是0
两函数功能一样,手册上讲,sizeof()是函数count()的别名。
那么多维数组长度要怎么统计呢?继续看例子
比如你读取的数组是一个二维数组:
复制代码
代码如下:
<?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是不是有新闻信息,就要这样写了:
复制代码
代码如下:
<?php
if(is_array($arr)
&&
count($arr,COUNT_NORMAL)>0
)
{
.....
}
else
{
.....
}
?>
你可以使用这样的代码来测试该函数:
复制代码
代码如下:
<?php
$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
"<br/>"
echo
'统计多维数组:'.count($arr,1)//count($arr,COUNT_RECURSIVE)
?>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)