如何在php中创建固定长度的多维数组?
要建立固定的数组,你应该使用SplFixedArray从Standard PHP Library扩展:
的SplFixedArray类提供阵列的主要功能。 SplFixedArray和普通PHP数组之间的主要区别在于SplFixedArray具有固定长度并且只允许范围内的整数作为索引。优点是它允许更快的数组实现。
亲爱的我们不能使用SplFixedArray创建多维数组。 –
什么是阻止您嵌套SplFixedArray创建多维数组? –
它不是很像PHP,但可以使用此功能(基于Grzegorz'SplFixedArray
提示)生成任意维度的固定大小的数组。
function createFixedArray() {
$args = func_get_arg(0);
$array = new SplFixedArray($args[0]);
if (isset($args[1])) {
$newArgs = array_splice($args, 1);
for ($i=0; $i<$args[0]; $i++) {
$array[$i] = createFixedArray($newArgs);
}
}
return $array;
}
使用例:
$fixedArray = createFixedArray(array(2, 2, 2));
$fixedArray[0][0][0] = 0;
$fixedArray[0][0][1] = 1;
$fixedArray[0][1][0] = 1;
$fixedArray[0][1][1] = 0;
$fixedArray[1][0][0] = 1;
$fixedArray[1][0][1] = 0;
$fixedArray[1][1][0] = 0;
$fixedArray[1][1][1] = 1;
var_dump($fixedArray);
生成
object(SplFixedArray)#1 (2) {
[0]=>
object(SplFixedArray)#2 (2) {
[0]=>
object(SplFixedArray)#3 (2) {
[0]=>
int(0)
[1]=>
int(1)
}
[1]=>
object(SplFixedArray)#4 (2) {
[0]=>
int(1)
[1]=>
int(0)
}
}
[1]=>
object(SplFixedArray)#5 (2) {
[0]=>
object(SplFixedArray)#6 (2) {
[0]=>
int(1)
[1]=>
int(0)
}
[1]=>
object(SplFixedArray)#7 (2) {
[0]=>
int(0)
[1]=>
int(1)
}
}
}
据我所知,在运行时创建数组需要很多时间,因为每次我们使用新建数组时,它将删除数组占用的旧内存,然后在新内存位置创建新大小的数组,并复制和粘贴数组数据。我的代码可能会生成巨大的数组,你认为这将是一个好主意,在运行时生成大尺寸数组....正如我告诉我想创建固定的多日。数组,但不是在运行时... –
用你自己的数据运行一些测试,看看它如何工作处理和内存明智。您的数据和设置在问题中不明确,并且超出了它的范围。 –
很抱歉,但目前还不清楚是什么,你居然问。 – arkascha
PHP数组是动态的,你不需要声明它们,也没有固定的大小。 – Devon
请注意,php作为非声明性编程语言不使用严格的类型。它遵循更加动态的方法,数组和对象不仅可以在值中进行修改,而且可以在“即时”结构中进行修改。 – arkascha