Php,将3d数组打印到表中

时间:2012-05-04 12:57:36

标签: php arrays dynamic

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

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

价格数组是总数。 (有点傻名,我才意识到) namesarray是名字数组 和product array是产品代码列表

我需要在像

这样的表格中打印它

“|£3.45 | Jelly Beans | 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

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

2 个答案:

答案 0 :(得分:0)

zip function from 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 = price,1 = name,2 = code。你显然想按价格上涨排序,因此我们正在比较价格指数。这导致基于价格的新/排序数组。

您还可以使用以下内容代替usort($c, 'cmp');来电:

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

但是,这仅适用于PHP版本&gt; = 5.3

答案 1 :(得分:0)

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

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

相关问题