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,你完全正确。我将补充这一点作为警告。