Php m[‘兑换模式’][‘积分’]){ $result[$item['redememememode']=$item; } 返回$result; }, []);

Php m[‘兑换模式’][‘积分’]){ $result[$item['redememememode']=$item; } 返回$result; }, []);,php,arrays,Php,Arrays,稍微减少一点阵列就可以使它非常紧凑: $array = array_reduce($array, function (array $result, array $item) { if (!isset($result[$item['redeemMode']]) || $item['points'] < $result[$item['redeemMode']]['points']) { $result[$item['redeemMode']] = $item;

稍微减少一点阵列就可以使它非常紧凑:

$array = array_reduce($array, function (array $result, array $item) {
    if (!isset($result[$item['redeemMode']]) || $item['points'] < $result[$item['redeemMode']]['points']) {
        $result[$item['redeemMode']] = $item;
    }
    return $result;
}, []);
$array=array\u reduce($array,function)(array$result,array$item){
如果(!isset($result[$item['redemememode']])| |$item['points']<$result[$item['redemode']]['points']){
$result[$item['redememememode']=$item;
}
返回$result;
}, []);

稍微减少一点阵列就可以使它非常紧凑:

$array = array_reduce($array, function (array $result, array $item) {
    if (!isset($result[$item['redeemMode']]) || $item['points'] < $result[$item['redeemMode']]['points']) {
        $result[$item['redeemMode']] = $item;
    }
    return $result;
}, []);
$array=array\u reduce($array,function)(array$result,array$item){
如果(!isset($result[$item['redemememode']])| |$item['points']<$result[$item['redemode']]['points']){
$result[$item['redememememode']=$item;
}
返回$result;
}, []);


数据是否来自数据库查询?如果是这样的话,这一切都可以通过RESTAPI实现。返回的数据来自RESTAPI。因为点不是整数,你怎么知道什么是最低的呢?谢谢,老兄,你提醒过我了。我已经在数组中添加了整数值。它可以从API调用。为什么不循环数组的每个其他值,检查它是否相同,如果相同,则返回较低的值?数据是否来自db查询?如果是这样的话,这一切都可以通过RESTAPI实现。返回的数据来自RESTAPI。因为点不是整数,你怎么知道什么是最低的呢?谢谢,老兄,你提醒过我了。我已经在数组中添加了整数值。它可以从API调用。为什么不循环数组的每个其他值,检查它是否相同,如果相同,则返回较低的值?数据是否来自db查询?如果是这样的话,这一切都可以通过RESTAPI实现。返回的数据来自RESTAPI。因为点不是整数,你怎么知道什么是最低的呢?谢谢,老兄,你提醒过我了。我已经在数组中添加了整数值。它可以从API调用。为什么不循环数组的每个其他值,检查它是否相同,如果相同,则返回较低的值?数据是否来自db查询?如果是这样的话,这一切都可以通过RESTAPI实现。返回的数据来自RESTAPI。因为点不是整数,你怎么知道什么是最低的呢?谢谢,老兄,你提醒过我了。我已经在数组中添加了整数值。它可以从API调用。为什么不循环数组的其他每个值,检查它是否相同,如果相同,则返回较低的值?谢谢George!这个过滤器似乎在工作,但是没有问题。它不选择最低值点。我也不明白foreach中的代码是如何工作的。对不起,这些代码不完全正确,我们已经编辑过了。它创建一个新数组,并在原始数组中循环,并将项添加到新数组中。当它将项目添加到新数组时,它使用模式值作为键值。foreach循环中的代码检查当前项在数组中该位置的points值是否小于现有项。如果它这样做,它将替换该位置的现有值。这是有意义的。这是我第一次遇到这种方法。你太棒了!谢谢乔治!这个过滤器似乎在工作,但是没有问题。它不选择最低值点。我也不明白foreach中的代码是如何工作的。对不起,这些代码不完全正确,我们已经编辑过了。它创建一个新数组,并在原始数组中循环,并将项添加到新数组中。当它将项目添加到新数组时,它使用模式值作为键值。foreach循环中的代码检查当前项在数组中该位置的points值是否小于现有项。如果它这样做,它将替换该位置的现有值。这是有意义的。这是我第一次遇到这种方法。你太棒了!谢谢乔治!这个过滤器似乎在工作,但是没有问题。它不选择最低值点。我也不明白foreach中的代码是如何工作的。对不起,这些代码不完全正确,我们已经编辑过了。它创建一个新数组,并在原始数组中循环,并将项添加到新数组中。当它将项目添加到新数组时,它使用模式值作为键值。foreach循环中的代码检查当前项在数组中该位置的points值是否小于现有项。如果它这样做,它将替换该位置的现有值。这是有意义的。这是我第一次遇到这种方法。你太棒了!谢谢乔治!这个过滤器似乎在工作,但是没有问题。它不选择最低值点。我也不明白foreach中的代码是如何工作的。对不起,这些代码不完全正确,我们已经编辑过了。它创建一个新数组,并在原始数组中循环,并将项添加到新数组中。当它将项目添加到新数组时,它使用模式值作为键值。foreach循环中的代码检查当前项在数组中该位置的points值是否小于现有项。如果它这样做,它将替换该位置的现有值。这是有意义的。这是我第一次遇到这种方法。你太棒了!
$items = array(
    array(
        'pointText' => '1000pts',
        'points' => '1000',
        'redeemMode' => '1'
        ),
    array(
        'pointText' => '950pts',
        'points' => '950',
        'redeemMode' => '1'
        ),
    array(
        'pointText' => '800pts + Cash RM 200',
        'points' => '800',
        'redeemMode' => '2'
        ),
    array(
        'pointText' => '500pts + Installment RM 100 (5% | 12 Months)',
        'points' => '500',
        'redeemMode' => '3'
        ),
    );

$itemsByRedeemMode = array();

foreach ($items as $item) {
    if (isset($itemsByRedeemMode[$item['redeemMode']])) {
        if ($item['points'] < $itemsByRedeemMode[$item['redeemMode']]['points']) {
            $itemsByRedeemMode[$item['redeemMode']] = $item;
        }
    } else {
        $itemsByRedeemMode[$item['redeemMode']] = $item;
    }
}

print_r($itemsByRedeemMode);
    <?php
    $array = array(
        array
            (
                'pointText' => '1000pts',
                'points' => 1000,
                'redeemMode' => 1
            ),

        array
            (
                'pointText' => '950pts',
                'points' => 1050,
                'redeemMode' => 1
            ),

        array
            (
                'pointText' => '800pts + Cash RM 200',
                'points' => 800,
                'redeemMode' => 2
            ),
        array
            (
                'pointText' => '500pts + Installment RM 100 (5% | 12 Months)',
                'points' => 500,
                'redeemMode' => 3
            )
    );
    $result = array();

    foreach ($array as $data) {
        $isHas = 0;
        $mode = $data['redeemMode'];
        foreach ($result as $key=> $data1) {
            if ($data1['redeemMode'] == $mode) {
                if ($data['points'] < $data1['points']) {
                    unset($result[$key]);
                    array_push($result,$data);
                }
                $isHas = 1;
            }
        }
        if ($isHas == 0) {
            array_push($result,$data);
        }
    }
    print_r($result);
?>
$array = array_reduce($array, function (array $result, array $item) {
    if (!isset($result[$item['redeemMode']]) || $item['points'] < $result[$item['redeemMode']]['points']) {
        $result[$item['redeemMode']] = $item;
    }
    return $result;
}, []);