在foreach里面循环 - 我做错了什么

时间:2017-02-24 11:25:45

标签: php arrays loops while-loop

我对php很新,并试图自己找到解决方案,但失败了。这是代码

$i = 0;
$j = 0;
$lastchange = 0;
$pricearray = array();
$onlyprices = array();
foreach ($mymainlist as $key => $val)
{
    $pricearray[$val] = $res[$val];   
    $avg = array_sum($pricearray[$val]) / count($pricearray[$val]); $onlyprices = array_values($pricearray[$val]) ;
    $dealmetric = ($avg - $onlyprices[$i])/ $avg * 100; 

    do { 
        if ($onlyprices[$i] === $onlyprices[$j]) { $j++; }
        else { $lastchange = $onlyprices[$j]; }
    } while ( $lastchange = 0 );
}
    echo $lastchange . '</br>'; 

数组$ onlyprices看起来像这样

Array ( [0] => 214.68 [1] => 214.68 [2] => 214.68 [3] => 217.96 [4] => 217.96 [5] => 217.96 [6] => 217.96 [7] => 217.96 [8] => 279.99 [9] => 221.63 [10] => 280.61 [11] => 269.99 [12] => 298.00 )

我想要做的是检查第一个元素何时不等于下一个元素并返回它。

所以在$ lastchange上面的数组中,应该返回217.96,因为[0] = [1]和[0] = [2]

感谢

1 个答案:

答案 0 :(得分:0)

$i = 0;
$j = 0;
$lastchange = 0;
$pricearray = array();
$onlyprices = array();

foreach ($mymainlist as $key => $val) {
    $pricearray[$val] = $res[$val];   
    $avg = array_sum($pricearray[$val]) / count($pricearray[$val]);
    $onlyprices = array_values($pricearray[$val]) ;
    $dealmetric = ($avg - $onlyprices[$i])/ $avg * 100; 

    do { 
        if ($onlyprices[$i] === $onlyprices[$j]) { 
            $j++; 
        } else { 
            $lastchange = $onlyprices[$j]; 
        }
    } while ($lastchange == 0);

    echo $lastchange . '</br>'; 
}

在你的代码中,你的while条件是将值0赋给变量$ lastcange。

你没有比较两者。