php 如何做一个固定长度的数组

php 如何做一个固定长度的数组,第1张

<?php

//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)

?>


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11273771.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存