1

我有多个数组需要比较它们包含多少项并选择具有最高值的数组(=其中包含最多项的数组)

例如,我有 3 个数组:

$a_arr = array( '0' => '45', '1' => '50', '2' => '100' );
$b_arr = array( '0' => 'apple' );
$c_arr = array( '0' => 'toyota', '1' => 'ferrari', );

现在我需要比较这些数组中的项目数,并选择项目数最多的数组。因此,在这种情况下,最高的是$a_arr3 个项目。

如何在 PHP 中以最有效的方式做到这一点?

4

3 回答 3

3

您可以使用max()来确定最长的数组。

$longest = max($a_arr, $b_arr, $c_arr);
// Will return the array with highest amount of items ($a_arr)

将其与count()结合以获取最长数组中的项目数量。

$longest = max(count($a_arr), count($b_arr), count($c_arr));
// Will return the max number of items (3 in this case; length of $a_arr)
于 2013-11-12T20:49:03.533 回答
1

我提出一种方法:

$a_arr = array( '0' => '45', '1' => '50', '2' => '100' );
$b_arr = array( '0' => 'apple' );
$c_arr = array( '0' => 'toyota', '1' => 'ferrari', );

$result = $a_arr;
$nmax = count($a_arr);

$n = count($b_arr);
if($n > $nmax)
{
  $nmax = $n;
  $result = $b_arr;
}

$n = count($c_arr);
if($n > $nmax)
{
  $nmax = $n;
  $result = $c_arr;
}

//
// compare other arrays...
//

//
// maximal elements: $nmax, $result here is the array with the maximum of items.
//
于 2013-11-12T20:53:07.110 回答
1

纯娱乐:

array_multisort(($c=array_map('count',(compact('a_arr','b_arr','c_arr')))),SORT_DESC,$c);
echo key($c) . ' = ' . current($c);
于 2013-11-12T20:59:51.777 回答