![](/img/trans.png)
[英]How to create 3 arrays from 1 multidimensional array with 2 arrays inside
[英]How to retrieve a an array from a multidimensional by the highest value of arrays inside
我需要解決一個函數來檢索條件中最高的數組集,主要問題是驗證數組中是否存在多個true且始終需要是最高值。
我的情況:
$purchase = 999;
$rules = array(
array(
'id' => 1,
'min' => 200,
),
array(
'id' => 2,
'min' => 300,
),
array(
'id' => 5,
'min' => 50,
),
array(
'id' => 3,
'min' => 2000,
)
);
$getRules = array();
foreach($rules as $rule){
if($purchase >= $rule['min']){
$getRules[] = $rule;
}
}
var_dump($getRules);
在這種情況下,我將獲得3組數組:
array(3) {
[0]=>
array(2) {
["id"]=>
int(1)
["min"]=>
int(200)
}
[1]=>
array(2) {
["id"]=>
int(2)
["min"]=>
int(300)
}
[2]=>
array(2) {
["id"]=>
int(5)
["min"]=>
int(50)
}
}
從這3組中,我需要獲得具有'min'鍵的組的最大值,這意味着我需要編號為1的陣列。
我試圖用usort進行排序,但是在多維中它不能正確排序,因此如果有人通過了它並且有解決方案,我將非常感激!
您可以僅添加一個附加的if語句,以檢查該規則是否大於先前的規則。
foreach($rules as $rule){
if($purchase >= $rule['min']){
$getRules[] = $rule;
if(!isset($highestRule['min']) || $highestRule['min'] < $rule['min'])){
$highestRule = $rule;
}
}
}
此函數將您的數組作為參數,對其進行迭代,如果當前最小值大於前一個最小值,則繼續替換$highest_min
和$highest_min_index
。
最后,它將具有最大最小值位於的數組索引,並且僅從數組中返回該索引,以使您的數組具有最小的最小值。
function get_highest_min_array($in_array){
$out_array = array();
$highest_min_index = '';
$highest_min = 0;
foreach($in_array as $index => $out_array){
if($out_array['min'] > $highest_min){
$highest_min_index = $index;
$highest_min = $out_array['min'];
}
}
return $in_array[$highest_min_index];
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.