我对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]
感谢
答案 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。
你没有比较两者。