Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:数组数之间的不完全差异_Php_Arrays_Loops_Difference_Subtraction - Fatal编程技术网

PHP:数组数之间的不完全差异

PHP:数组数之间的不完全差异,php,arrays,loops,difference,subtraction,Php,Arrays,Loops,Difference,Subtraction,我创建了数组$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, 8

我创建了数组
$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];
    };
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);

我用同样的结果做了同样的工作:打印出44个条目@Andrey Samarskiy您使用的代码似乎略有不同?我将脚本的一部分从我的问题中分离出来,现在它确实没有显示任何错误。非常感谢。“我想我在其他方面犯了一个错误。”安德烈·马斯基:没问题,祝你的程序好运。请将此标记为已接受的答案。@GeorgeAppleton请注意,“无法复制”是一个接近投票的原因。像这样的问题应该关闭,不要回答。@PatrickQ谢谢,我不知道这一点
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)
}