【发布时间】:2021-04-12 06:01:42
【问题描述】:
此代码是更大程序的一部分,但我认为这是问题所在。我只需要在数组的相同索引处获得相同的值,这是我编写的代码:
$a1=array(1,1,2);
$a2=array(1,2);
$a3=array(1,1);
$a4=array(1,1,3);
$a5=array(1,1,1,1);
$same= array();
for($i=0; $i<3; $i++){
while($a1[$i]==$a2[$i] && $a1[$i]==$a3[$i] && $a1[$i]==$a4[$i] && $a1[$i]==$a5[$i]){
array_push($same, $a1[$i]);
}
}
print_r($same);
它给了我这个错误:
允许的内存大小为 33554432 字节已用尽(尝试分配 33554440 字节)
在这里添加更多内存不是一种选择。
【问题讨论】:
-
您能否正确解释一下您在此处实际需要实现的目标?我无法从您的描述中分辨出来,而且代码对我来说也没有足够的意义,无法从中分辨出来。
while($a1[$i]=$a2[$i]=$a3[$i])- 这些是分配,所以该表达式的值将始终是$a3[$i]- 你确定这就是你真正想要开始的吗? -
我想从 5 个不同的数组中获取相同键的相同值。我已经在我的while循环中使用“==”来检查相等性并像
$a1[$i]==$a2[$i] && $a1[$i]==$a3[$i] && $a1[$i]==$a4[$i] && $a1[$i]==$a5[$i]这样比较它们,但它仍然给我错误。 -
“我想从 5 个不同的数组中获取相同键的相同值。” - 仍然不清楚这到底是什么意思。请去阅读How to Ask,然后请给我们一个适当的解释 - 包括示例输入数据,以及基于此您期望得到的确切结果。
-
使用帖子中给出的数组,以下循环应该输出具有相同键的值。因此,有了这些数组,
$same数组现在只能包含一个值。[0] => 1因为$a2数组在下一个位置的编号已经与其他位置不同。 -
我仍然不完全清楚你真正想要什么。为什么 for 循环会转到
$i<3,那个幻数从何而来?为什么在 for 中还有第二个循环?也许while应该是一个简单的if?那么这可能开始有意义......
标签: php memory-management memory-leaks