как отформатировать массив в php? - PullRequest
0 голосов
/ 28 октября 2011

У меня есть массив $array, который выводит что-то вроде:

Array
(
[Terry] => Array
    (
        [2011-10-26] => Array
            (
                [0] => 69.90
                [1] => 69.90
            )

    )

[Travis] => Array
    (
        [2011-10-26] => Array
            (
                [0] => 199.50
            )

        [2011-10-27] => Array
            (
                [0] => 199.50
            )

    )
)

Я пытаюсь поместить данные в таблицу, например так:считайте так:

foreach($array as $key => $value){  
     echo $key; // this will give me the names
     foreach($value as $keys => $values){
         echo $keys; //this will give me the dates
         echo count($values); // this will give me the count per date
     }
}

даты, которые я получаю, выглядят так: 2011-10-26 2011-10-26 2011-10-27

Я играл с этим некоторое время, и у меня кончились идеи.1014 *

любая помощь?

Спасибо

Ответы [ 2 ]

2 голосов
/ 28 октября 2011
// build a list of all of the available dates
$dates = array();
foreach($array as $key => $value){
    $dates = array_merge($value, $dates);
}

$dates = array_keys($dates);

// You may want to sort the date columns here somehow
echo "Names\t".implode("\t",$dates)."\n";
foreach($array as $key => $value){
    echo $key;
    foreach($dates as $d){
        echo "\t".(array_key_exists($d, $value) ? count($value[$d]) : 0);
    }
    echo "\n";
}
0 голосов
/ 28 октября 2011
$result = array();
$days   = array();

foreach ($array as $person => &$dates)
    $days = array_merge(array_keys($dates), $days);

$days = array_unique($days);
sort($days); // Sort days.

foreach ($array as $person => &$dates) {
    foreach ($days as &$day) 
        // You can also use array_key_exists instead of '@' to suppress the notice.
        $result[$day][$person] = @count($dates[$day]);
}

var_dump($result);

Результат:

array(2) {
  ["2011-10-26"]=>
  array(2) {
    ["Terry"]=>
    int(2)
    ["Travis"]=>
    int(1)
  }
  ["2011-10-27"]=>
  array(2) {
    ["Terry"]=>
    int(0)
    ["Travis"]=>
    int(1)
  }
}
...