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

キーと値を新しい配列に入れるだけです。

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

于 2013-02-05T21:49:42.210 に答える
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 配列を結合し、それらを "zip" します。
したがって、指定されたすべての配列のインデックス 0 を取得し、それを新しい配列エントリにします。利用可能なすべてのインデックスに対してそれを行います。

このcmp関数は 2 つの変数 (この場合は 2 つの配列) を取ります。ここで、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 に答える