Php 将数组中的元素配对两个';然后求差和和
假设我有这个数组Php 将数组中的元素配对两个';然后求差和和,php,arrays,Php,Arrays,假设我有这个数组 $number = [2,1,4,3,6,2]; 首先将数组中的元素按2配对,并找出它们的差异 这是第一个需求中的输出 $diff[] = [1,1,4]; 第二,求和所有差额 这是最终输出 $sum[] = [6]; 条件: 数组大小始终为偶数 一对中的第一个元素总是大于第二个元素,因此它们之间没有负差异 到目前为止,我所做的只是计算一个数组的大小,然后我不知道如何将它们按2配对。图特 这在php中可能吗?有没有内置的函数来做这件事?好吧,考虑到你的情况,我想到了以
$number = [2,1,4,3,6,2];
$diff[] = [1,1,4];
$sum[] = [6];
这在php中可能吗?有没有内置的函数来做这件事?好吧,考虑到你的情况,我想到了以下几点
$number = [2,1,4,3,6,2];
$total = 0;
for($i = 0; $i < count($number); $i+=2) {
$total += $number[$i] - $number[$i + 1];
}
$number=[2,1,4,3,6,2];
$total=0;
对于($i=0;$i
一行:
$number = [2,1,4,3,6,2];
$total = array_sum(array_map(function ($array) {
return current($array) - next($array);
}, array_chunk($number, 2)));
echo $total;
这应该很好:
<?
$number = array(2,1,4,3,6,2);
for($i=0;$i<count($number); $i+=2){
$dif[] = $number[$i] - $number[$i+1];
}
print_r($dif);
$sum = 0;
foreach ($dif as $item){
$sum += $item;
}
echo 'SUM = '.$sum;
?>
如果您希望保留所有不同的阶段
$numbers = [2,1,4,3,6,2];
$diff = [];
for($i=0,$c=count($numbers);$i<$c;$i+=2)
{
$diff[] = $numbers[$i]-$numbers[$i+1];
}
$sum = array_sum($diff);
$numbers=[2,1,4,3,6,2];
$diff=[];
对于($i=0,$c=count($numbers);$i请检查这是否适用于您
<?php
$sum=0;
$number = array(2,1,4,3,6,2);
for ($i=0;$i<=count($number);$i++) {
if ($i%2 == 1 ) {
$sum = $sum + $number[$i-1] - $number[$i];
}
}
print $sum;
?>
试试这个:
$number = array(2,1,4,3,6,2);
$diff = array();
$v3 = 0;
$i=1;
foreach($number as $val){
if ($i % 2 !== 0) {
$v1 = $val;
}
if ($i % 2 === 0) {
$v2 = $val;
$diff[] = $v1-$v2;
$v3+= $v1-$v2;
}
$i++;
}
print $v3;//total value
print_r($diff); //diff value array
到目前为止,它提供了所需的解决方案
$arr = array(2,1,4,3,6,2);
$temp = 0;
$diff = array();
foreach ($arr as $key => $value) {
if($key % 2 == 0) {
$temp = $value;
}
else {
$diff[] = $temp - $value;
}
}
print_R($diff);
print 'Total :' . array_sum($diff);
注意:如果任何人知道任何预定义函数,而不能识别此代码,请更新。我试图理解您的问题,但从我的大脑中得到E\u PARSE\u错误
。一种方法是使用两步for循环:例如for($I=0,$c=count($numbers)$iarray\u chunk
将数组按2分组,但这可能太过分了。他想要求差的和,而不是求平均值。可能需要一个abs()来处理像$number=[1,2,4,3,2,6];
这样的情况,但其他方面是一个整洁的数组solution@MarkBakerOP已声明<代码>“一对中的第一个元素总是比第二个元素大”
啊,好吧,错过了……但仍然是一个很好的解决方案这是一个有效的解决方案,基于投票我认为这是最好的。谢谢。为什么硬编码$max\u元素
而不是使用计数($number)
?此代码需要很多改进-我建议查看我的答案,以获得更有效的for循环实现。希望您能够学习自己,改进代码和操作对不起!我同意count是正确的,我还更改为包含I%2==1,以检查这是否奇怪——这是我在php中对foru的第一个答复ms:-)
$arr = array(2,1,4,3,6,2);
$temp = 0;
$diff = array();
foreach ($arr as $key => $value) {
if($key % 2 == 0) {
$temp = $value;
}
else {
$diff[] = $temp - $value;
}
}
print_R($diff);
print 'Total :' . array_sum($diff);