反转foreach结果

时间:2012-05-17 14:47:23

标签: php

我试图在foreach循环中反转结果,我知道我可以尝试使用array_reverse,但这不会反转循环的输出。

结果目前看起来像这样

[new Date(2012, 05, 16), 630.10, 615.94],
[new Date(2012, 05, 15), 615.00, 603.75],
[new Date(2012, 05, 14), 608.50, 600.58],
[new Date(2012, 05, 11), 614.55, 604.77],
[new Date(2012, 05, 10), 616.19, 610.23],

我想要的输出是

[new Date(2012, 05, 10), 616.19, 610.23], 
[new Date(2012, 05, 11), 614.55, 604.77],
[new Date(2012, 05, 14), 608.50, 600.58],
[new Date(2012, 05, 15), 615.00, 603.75],
[new Date(2012, 05, 16), 630.10, 615.94],

这是我的代码。

foreach($stockcontentex as $stockexplode){
    $stockex = explode(',',$stockcontentex[$i++]);
    $stockexdate = explode('-', $stockex[0]);
    $stockYear = $stockexdate[0];
    $stockMonth = $stockexdate[1];
    $stockDay = $stockexdate[2];
    $stockHigh = $stockex[2];
    $stockLow = $stockex[3];
    $_str .= '[new Date('.$stockYear.', '.$stockMonth.', '.$stockDay.'), '.$stockHigh.', '.$stockLow.'],'. "\n";

    }

任何帮助表示赞赏,我不确定是否还有其他可能需要的信息。

感谢

3 个答案:

答案 0 :(得分:1)

使用array_reverse然后交换它:

$stockex = explode(',',$stockcontentex[$i++]);

用这个:

$stockex = explode(',',$stockexplode);

或者,您可以切换.=

 $_str = '[new Date('.$stockYear.', '.$stockMonth.
           ', '.$stockDay.'), '.$stockHigh.', '.$stockLow.'],'. "\n" . $_str;

答案 1 :(得分:0)

虽然我个人会选择@ cwallenpoole的答案,但另一种方法是:

$stockcount = count($stockcontentex);
for ($i = $stockcount; $i >= 0; $i--) {
    $stockex = explode(',',$stockcontentex[$i++]);
    $stockexdate = explode('-', $stockex[0]);
    $stockYear = $stockexdate[0];
    $stockMonth = $stockexdate[1];
    $stockDay = $stockexdate[2];
    $stockHigh = $stockex[2];
    $stockLow = $stockex[3];
    $_str .= '[new Date('.$stockYear.', '.$stockMonth.', '.$stockDay.'), '.$stockHigh.', '.$stockLow.'],'. "\n";
}

答案 2 :(得分:0)

我创建了这种方法来反转数组循环的遍历:
(在这种情况下是模拟的反向foreach)

if(!empty($array)) {
    $value = end($array);
    $key = key($array);
    do {

        /**
         * Do your stuff here
         * Could be old code/stuff here that worked with foreach($array as $key => $value)
         */

        $value = prev($array);
        $key = key($array);
    } while($key !== null);
}

注意:这有点像黑客攻击。但是它应该适用于你想要反向遍历的各种(关联)数组。