PHP在数字数组范围内查找气泡

PHP在数字数组范围内查找气泡,php,arrays,Php,Arrays,样本阵列 $array = [ 61029, 64698, 67355, 70000, // has bubble 43651, 48346, 52029, // has bubble 48029, 48698, 49355, 50000, ]; 如何识别数组是升序和降序的,它也有一个气泡以下是我的假设,请告诉我我是否正确/错误 泡沫背景:贷款人获得贷款。贷款人偿还贷款。在还清债务的过程中,

样本阵列

$array = [

    61029,
    64698,
    67355,
    70000, // has bubble
    43651,
    48346,
    52029,  // has bubble 
    48029,
    48698,
    49355,
    50000,

    ];

如何识别数组是升序和降序的,它也有一个气泡

以下是我的假设,请告诉我我是否正确/错误

泡沫背景:贷款人获得贷款。贷款人偿还贷款。在还清债务的过程中,他又获得了一笔贷款

气泡技术:数组按降序包含余额。如果价值比上一次上升,则被视为泡沫

$prev = 0;
foreach($array as $a){
    if($a>$prev){
        $prev = $a;
    }else{
        $result[] = $prev;
        $prev = $a;
    }
}

var_dump($result);
//70000, 52029
以下是如何识别阵列中的气泡:

<?php

/**
 * An array in DESCENDING order (OP)
 */
$array = [
    61029,
    64698,
    67355,
    70000, // has bubble
    43651,
    48346,
    52029,  // has bubble 
    48029,
    48698,
    49355,
    50000,
];

/**
 * An array in ASCENDING order
 */
$asc_array = [
    10,
    20,
    30,
    40,
    50,
    45, //Has bubble
    55
];

/**
 * Given an array, identify a "bubble",
 * aka. an increasing value in an otherwise decreasing value array.
 * Returns the $key where the bubble resides.
 */ 
function identifyBubble($array){
    foreach($array as $id => $item){
        if(!$id){
            continue;
        }
        if(!$array[$id+1]){
            continue;
        }
        if(($array[$id-1] < $array[$id]) && ($array[$id] > $array[$id+1])){
            return $id;
        }
    }
    return false;
}

/**
 * If an array is in ASCENDING order, switch it around,
 * otherwise return the array as is.
 */
function makeArrayDescending($array){
    if(reset($array) < end($array)){
        return array_values(array_reverse($array));
    }
    return $array;
}

var_dump(identifyBubble($array));

var_dump(makeArrayDescending($asc_array));

var_dump(identifyBubble(makeArrayDescending($asc_array)));
警告

这将仅适用于具有顺序索引数的关联数组。这只适用于一维数组


可以循环数组,查看该值是否小于上一个值。 如果是,则上一个值是一个气泡

$prev = 0;
foreach($array as $a){
    if($a>$prev){
        $prev = $a;
    }else{
        $result[] = $prev;
        $prev = $a;
    }
}

var_dump($result);
//70000, 52029

需要更多描述吗?这里的bubble是什么?bubble意味着充值,例如,一个人贷款50000,四个月后他得到了充值loanmax函数的提议?max方法很好,我需要找出哪个数组值有bubble,我需要删除bubble之后的值,Bubble可以给我多个时间数组\搜索或数组\键将为您提供具有已建立值的键。请记住,这仅适用于索引数组,也适用于关联数组fail@Andreas,你完全正确。我将补充这一点作为警告。