算法在排序数组中查找位置

时间:2011-07-11 11:25:43

标签: php arrays

我有一个排序的键数组和值

    Array
    (
        [1] => Array
            (
                [value] => 65
                ......
            )

        [0] => Array
            (
                [value] => 65
            )

        [5] => Array
            (
                [value] => 35
            )

        [4] => Array
            (
                [value] => 3
            )

        [2] => Array
            (
                [value] => 0
            )

        [3] => Array
            (
                [value] => 0
            )
)

我搜索在此数组上运行的简单算法并返回地点数组 喜欢:

places['1'] = keys => array(1,0), value => 65
places['2'] = keys => array(5),   value => 35
places['3'] = keys => array(4),   value => 3
places['4'] = keys => array(2,3), value => 0

所以首先我们得到键1 + 0,值为65 等等.......

我尝试使用foreach循环并添加大量if条件, 我搜索一些简单的东西

感谢

1 个答案:

答案 0 :(得分:1)

我假设你在最后一行是places['4']。如果是这样,这应该这样做(否则你必须解释为什么有2;)):

$placeIndex = 0;
$lastValue = null;
$places = array();

foreach($array as $key => $value) {
    if($value['value'] === $lastValue) {
        $places[$placeIndex]['keys'][] = $key;
    }
    else {
        $placeIndex++;
        $lastValue = $value['value'];
        $places[$placeIndex] = array(
            'keys' => array($key),
            'value' => $lastValue
        );
    }
}