Отображение значения ключа в массиве ассоциаций на основе его объединения? - PullRequest
0 голосов
/ 24 июня 2011

Отображение массива?

У меня есть

$A= array("A1"=>array("x"=>1,"b"=>2,"d"=>3,"s"=>8),
          "A2"=>array("a"=>4,"b"=>3,"c"=>2,"d"=>1)
          );

ВЫХОД (HTML):

   | a |  b  |  c | d | x | s
------------------------------
A1 | 0 |  2  |  0 | 3 | 1 | 8
A2 | 4 |  3  |  2 | 1 | 0 | 0

Кто-нибудь знает, как это сделать?

Ответы [ 2 ]

1 голос
/ 24 июня 2011

Получить ключи

$keys = array_unique(array_merge (array_keys($A['A1']), array_keys($A['A2'])));

Затем создать вывод

echo " | ";
echo implode(' | ', $keys) . "\n";

echo "\n";
foreach ($A as $name => $oneA) {
  echo "$name ";
  foreach ($keys as $key) echo "| ". (isset($oneA[$key]) ? $oneA[$key] : 0);
  echo "\n";
}

или в виде html-таблицы

<table>
  <tr>
    <td>&nbsp;</td>
    <td><?php implode('</td><td>', $keys);</td>
  </tr>
  <?php foreach ($A as $name => $oneA) : ?>
  <tr>
    <td><?php echo $name; ?></td>
    <?php foreach ($keys as $key): ?>
      <td><?php echo isset($oneA[$key]) ? $oneA[$key] : 0; ?></td>
    <?php endforeach; ?>
  </tr>
  <?php endforeach; ?>
</table>

Вы можете отсортировать ключи до и отформатироватьвыход.Это просто краткая форма.

0 голосов
/ 24 июня 2011

Сначала соберите все ключи во внутренних массивах:

$keys = array_keys(
    array_reduce($A, function ($a, $b) { return $a + $b; }, array()));
sort($keys);

Выведите на печать заголовки и, наконец, переберите строки и, для каждой строки, ключи:

foreach ($A as $lineKey => $lineValue) {
    //TODO: print $lineKey;
    foreach ($keys as $k) {
        //TODO: print $lineValue[$k]; or 0
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...