簡體   English   中英

查找具有最高和最低元素數量的數組

[英]Finding array with highest and lowest number of elements

我想根據它包含的值的數量找出最大和最小的數組。

例如:

$array=[
 "subarray1"=>[1]
 "subarray2"=>[1,2,3,4,5,6,7,8]
 "subarray3"=>[1,2,3,4]
];

max_elements($陣列)返回subarray2min_elements($陣列)返回subarray1

PHP是否有任何函數可以選擇元素數最多的數組和元素數最少的數組?

一旦獲得count就進行迭代,然后使用minmax使用array_search返回鍵

<?php

function extreme_elements($arr, $min_max){

  foreach ($arr as $key => $val)
    $arr[$key] = count($val);

  return array_search($min_max($arr),$arr);

}

// friendly named wrappers
function max_elements($arr){
  return extreme_elements($arr, 'max');
}
function min_elements($arr){
  return extreme_elements($arr, 'min');
}

$array=[
 "subarray1"=>[1],
 "subarray2"=>[1,2,3,4,5,6,7,8],
 "subarray3"=>[1,2,3,4]
];

echo max_elements($array); // subarray2
echo min_elements($array); // subarray1

查找包含最少成員的子數組的鍵的示例:

<?php
$array=[
 'subarray1'=>[1],
 'subarray2'=>[1,2,3,4,5,6,7,8],
 'subarray3'=>[1,2,3,4],
 'subarray4'=>[3],
];

$counted = array_map('count', $array);
$min_member_count = min($counted);
$mins = array_filter($counted, function($item) use ($min_member_count) {
    if($min_member_count == $item) return true;
});
var_export(array_keys($mins));

輸出:

array (
  0 => 'subarray1',
  1 => 'subarray4',
)

受到@ Rizier123的評論的啟發。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM