PHP объединяет похожие объекты в многомерном массиве - PullRequest
1 голос
/ 25 августа 2011

У меня есть многомерный массив в PHP, который выглядит примерно так:

array(array(Category => Video,
            Value => 10.99),
      array(Category => Video,
            Value => 12.99),
      array(Category => Music,
            Value => 9.99)
)

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

<tr><td>Video</td><td>23.98</td></tr>
<tr><td>Music</td><td>9.99</td></tr>

Любые предложения о том, как это сделать?

РЕДАКТИРОВАТЬ: я могу иметь их в двух разных массивах, если это будет проще.

Ответы [ 2 ]

1 голос
/ 25 августа 2011
$result = array();
foreach ($array as $value) {
  if (isset($result[$value['Category']])) {
    $result[$value['Category']] += $value['Value'];
  } else {
    $result[$value['Category']] = $value['Value'];
  }
}
foreach ($result as $category => $value)  {
  print "<tr><td>$category</td><td>$value</td></tr>";
}
1 голос
/ 25 августа 2011

Простой цикл будет делать:

$array = [your array];
$result = array();
foreach ($array as $a) {
    if (!isset($result[$a['Category']])) {
        $result[$a['Category']] = $a['Value'];
    } else {
        $result[$a['Category']] += $a['Value'];
    }
}
foreach ($result as $k => $v) {
    echo '<tr><td>' . htmlspecialchars($k) . '</td><td>' . $v . '</td></tr>';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...