1

基本上我需要将一些数据分类到前 5 名最佳销售中。我已经设法将我使用的 3 个数组分组。

$c = array_combine($PriceArray,$namesArray,$ProductArray);
krsort($c); 

价格数组是总数。(有点愚蠢的名字,我刚刚意识到)namesarray 是名称数组,product array 是产品代码列表

我需要在表格中打印它

“|3.45 英镑|果冻豆 | 120|” 所以他们有自己的专栏,但目前它正在像 | 3.45| 数组 | 数组|

我用

 echo '<td>'.$ProductArray[$i].'</td>'.'<td>'.$year.'</td>'.'<td>'.array_keys($c,$c[$i]).'<td>'. $PriceArray[$i].'</td>';

打印它。

提前致谢

    Array
    (

    [0] => 77358.47
    [1] => 111004.98
    [2] => 227194.9
    [3] => 84645.75
    [4] => 29693.58
    [5] => 198867.2
    [6] => 110779.5
    [7] => 210530.62
    [8] => 102916.79
    [9] => 186630.75
    [10] => 140143.24
    [11] => 48984.48
    [12] => 74759.34
    [13] => 204793.14
    [14] => 82192.5
    [15] => 167402.7
    [16] => 58232.72
    [17] => 216302.32
    [18] => 26353.92
    [19] => 149993.1

)

Array
(
    [0] => Jelly beans
    [1] => Banana milkshake powder
    [2] => Edam Cheese
    [3] => Hairnet
    [4] => Aubergine jam
    [5] => White bread
    [6] => Brown bread
    [7] => Purple bread
    [8] => Plain flour
    [9] => Striped flour
    [10] => Soft tissues
    [11] => Anti personnel mines
    [12] => Chicken fillets
    [13] => Beef cubes
    [14] => Marshmallows
    [15] => Fizzy carrot juice
    [16] => Low fat lard
    [17] => Suet dumpling mix
    [18] => Gravy powder
    [19] => Cherry pie filling
)
Array
(
    [0] => 121
    [1] => 122
    [2] => 123
    [3] => 124
    [4] => 125
    [5] => 126
    [6] => 127
    [7] => 128
    [8] => 129
    [9] => 130
    [10] => 131
    [11] => 132
    [12] => 133
    [13] => 134
    [14] => 135
    [15] => 136
    [16] => 137
    [17] => 138
    [18] => 139
    [19] => 140

) 产品代码 年份 名称 销售总额

4

2 回答 2

0

Zip 功能公然盗取自:来自 SO 的 zip 功能

function zip() {
  $args = func_get_args();
  $zipped = array();
  $n = count($args);
  for ($i=0; $i<$n; ++$i) {
    reset($args[$i]);
  }
  while ($n) {
    $tmp = array();
    for ($i=0; $i<$n; ++$i) {
      if (key($args[$i]) === null) {
        break 2;
      }
      $tmp[] = current($args[$i]);
      next($args[$i]);
    }
    $zipped[] = $tmp;
  }
  return $zipped;
}

function cmp($a, $b)
{
  if($a[0] == $b[0]){
    return 0;
  }
  return ($a[0] < $b[0]) ? -1 : 1;
}

$PriceArray   = array( 4.56, 1.23, 7.89 );
$namesArray   = array( 'ab', 'cd', 'ef' );
$ProductArray = array( '11', '22', '33' );

$c = zip($PriceArray, $namesArray, $ProductArray);

usort($c, 'cmp');

foreach($c as $prices)
{
  //$prices[0] == price
  //$prices[1] == name
  //$prices[2] == code
  echo "{$prices[0]}|{$prices[1]}|{$prices[2]}\n";

印刷:

1.23|cd|22
4.56|ab|11
7.89|ef|33

我正在使用 Python 中本机可用的 zip 函数来组合 N 数组并将它们“压缩”在一起。
因此,取所有给定数组的索引 0,并将其设为新的数组条目。对所有可用的索引执行此操作。

cmp函数采用两个变量,在本例中为两个数组,其中 index-0 = 价格,1 = 名称,2 = 代码。您显然想按价格升序排序,因此我们正在比较价格指数。这会产生一个基于价格的新/排序数组。

您还可以usort($c, 'cmp');使用以下内容替换呼叫:

usort($c, function($a, $b){
  if($a[0] == $b[0]){
    return 0;
  }
  return ($a[0] < $b[0]) ? -1 : 1;
});

但是,这仅适用于 PHP 版本 >= 5.3

于 2012-05-04T13:15:44.300 回答
0

只需将键和值放入新数组即可。

$NewNamesArray = array_values($c); $NewPriceArray = array_keys($c)

于 2013-02-05T21:49:42.210 回答