PHP: 数组的数字之间的不完全差异
PHP: Incomplete differences between the numbers of an array
我创建了数组$numbers
,其中包含 45 个数字,从小到大排序,没有数字出现两次:
$numbers = [5, 12, 24, 43, 60, 84, 87, 94, 124, 178, 226, 276, 313, 327, 336, 364, 367 , 368, 383, 399, 403, 434, 505, 539, 545, 582 , 584, 586, 651, 654, 676, 729, 739, 750, 754, 777, 788, 808, 814, 846, 857, 886, 895, 932, 999];
我也定义空数组$differences
:
$differences = [];
并将$numbers
中的元素数量保存为变量$amount
:
$amount = count($numbers);
我的目标是保存数组 $differences
中 $numbers
元素之间的所有差异,即:
$differences[] = $numbers[1] - $numbers[0];
$differences[] = $numbers[2] - $numbers[1];
等等
我希望通过使用 for 循环更有效地完成此过程:
for ($i = 1; $i < $amount; $i++) {
$differences[] = $numbers[$i] - $numbers[$i-1];
};
循环似乎工作正常,但是,查看 $differences
的内容会注意到它只存储了 42 个数字,而不是预期的 44 个。通过打印 $differences
你可以看到少了最后两个区别
由于脚本在其他方面似乎工作正常,而且循环的简单性不会给很多错误留下余地,所以我觉得这个故障非常奇怪。
有谁知道它可能是什么原因以及如何解决?
编辑:我将脚本部分从我的问题中分离出来,现在它确实没有显示任何错误。我想我在其他地方犯了错误。
我运行你的代码,它输出了44个结果,这里没有错误。
$numbers = [5, 12, 24, 43, 60, 84, 87, 94, 124, 178, 226, 276, 313, 327, 336, 364, 367 , 368, 383, 399, 403, 434, 505, 539, 545, 582 , 584, 586, 651, 654, 676, 729, 739, 750, 754, 777, 788, 808, 814, 846, 857, 886, 895, 932, 999];
$amount = count($numbers);
for ($i = 1; $i < $amount; $i++) {
$differences[] = $numbers[$i] - $numbers[$i-1];
};
var_dump($differences);
结果:
array(44) {
[0]=>
int(7)
[1]=>
int(12)
[2]=>
int(19)
[3]=>
int(17)
[4]=>
int(24)
[5]=>
int(3)
[6]=>
int(7)
[7]=>
int(30)
[8]=>
int(54)
[9]=>
int(48)
[10]=>
int(50)
[11]=>
int(37)
[12]=>
int(14)
[13]=>
int(9)
[14]=>
int(28)
[15]=>
int(3)
[16]=>
int(1)
[17]=>
int(15)
[18]=>
int(16)
[19]=>
int(4)
[20]=>
int(31)
[21]=>
int(71)
[22]=>
int(34)
[23]=>
int(6)
[24]=>
int(37)
[25]=>
int(2)
[26]=>
int(2)
[27]=>
int(65)
[28]=>
int(3)
[29]=>
int(22)
[30]=>
int(53)
[31]=>
int(10)
[32]=>
int(11)
[33]=>
int(4)
[34]=>
int(23)
[35]=>
int(11)
[36]=>
int(20)
[37]=>
int(6)
[38]=>
int(32)
[39]=>
int(11)
[40]=>
int(29)
[41]=>
int(9)
[42]=>
int(37)
[43]=>
int(67)
}
我创建了数组$numbers
,其中包含 45 个数字,从小到大排序,没有数字出现两次:
$numbers = [5, 12, 24, 43, 60, 84, 87, 94, 124, 178, 226, 276, 313, 327, 336, 364, 367 , 368, 383, 399, 403, 434, 505, 539, 545, 582 , 584, 586, 651, 654, 676, 729, 739, 750, 754, 777, 788, 808, 814, 846, 857, 886, 895, 932, 999];
我也定义空数组$differences
:
$differences = [];
并将$numbers
中的元素数量保存为变量$amount
:
$amount = count($numbers);
我的目标是保存数组 $differences
中 $numbers
元素之间的所有差异,即:
$differences[] = $numbers[1] - $numbers[0];
$differences[] = $numbers[2] - $numbers[1];
等等
我希望通过使用 for 循环更有效地完成此过程:
for ($i = 1; $i < $amount; $i++) {
$differences[] = $numbers[$i] - $numbers[$i-1];
};
循环似乎工作正常,但是,查看 $differences
的内容会注意到它只存储了 42 个数字,而不是预期的 44 个。通过打印 $differences
你可以看到少了最后两个区别
由于脚本在其他方面似乎工作正常,而且循环的简单性不会给很多错误留下余地,所以我觉得这个故障非常奇怪。
有谁知道它可能是什么原因以及如何解决?
编辑:我将脚本部分从我的问题中分离出来,现在它确实没有显示任何错误。我想我在其他地方犯了错误。
我运行你的代码,它输出了44个结果,这里没有错误。
$numbers = [5, 12, 24, 43, 60, 84, 87, 94, 124, 178, 226, 276, 313, 327, 336, 364, 367 , 368, 383, 399, 403, 434, 505, 539, 545, 582 , 584, 586, 651, 654, 676, 729, 739, 750, 754, 777, 788, 808, 814, 846, 857, 886, 895, 932, 999];
$amount = count($numbers);
for ($i = 1; $i < $amount; $i++) {
$differences[] = $numbers[$i] - $numbers[$i-1];
};
var_dump($differences);
结果:
array(44) {
[0]=>
int(7)
[1]=>
int(12)
[2]=>
int(19)
[3]=>
int(17)
[4]=>
int(24)
[5]=>
int(3)
[6]=>
int(7)
[7]=>
int(30)
[8]=>
int(54)
[9]=>
int(48)
[10]=>
int(50)
[11]=>
int(37)
[12]=>
int(14)
[13]=>
int(9)
[14]=>
int(28)
[15]=>
int(3)
[16]=>
int(1)
[17]=>
int(15)
[18]=>
int(16)
[19]=>
int(4)
[20]=>
int(31)
[21]=>
int(71)
[22]=>
int(34)
[23]=>
int(6)
[24]=>
int(37)
[25]=>
int(2)
[26]=>
int(2)
[27]=>
int(65)
[28]=>
int(3)
[29]=>
int(22)
[30]=>
int(53)
[31]=>
int(10)
[32]=>
int(11)
[33]=>
int(4)
[34]=>
int(23)
[35]=>
int(11)
[36]=>
int(20)
[37]=>
int(6)
[38]=>
int(32)
[39]=>
int(11)
[40]=>
int(29)
[41]=>
int(9)
[42]=>
int(37)
[43]=>
int(67)
}