Объединение описания и одного массива с данными - PullRequest
0 голосов
/ 26 ноября 2011

Я знаю, название не очень полезно, но я попытаюсь объяснить, что я ищу.

Моя главная проблема в том, что я ищу простой способ объединить двамассивы.

$lang = array('de' => 'german', 'es' => 'spanish', 'nl' => 'dutch');

У меня есть X сайтов, у которых должна быть такая таблица:

language    value1    value2    value3
--------------------------------------
de          123       56        097
en          84        129       123
es          0         0         0
nl          0         0         0

Сайт Y может выглядеть так:

language    value1    value2    value3
--------------------------------------
de          9         12        123
en          32        65       156
es          0         0         0
nl          23        12        89

Эта таблица может отличаться на каждом сайте, но я хочу, чтобы отображался каждый язык, даже если он не имеет значений.Список языков должен быть разделен, чтобы расширить его позже.

Понятно?Нужно больше информации?

1 Ответ

0 голосов
/ 26 ноября 2011

Я делал это из CLI, поэтому в нем нет структуры HTML.Я не уверен, полностью ли я понял все, что вы пытались сделать, но вот что у меня есть:

$lang = array('de' => 'german', 'es' => 'spanish', 'nl' => 'dutch', 'en' => 'english');

$sites = array(
    'value1' => array('en' => 35, 'de' => 54),
    'value2' => array('nl' => 543, 'en' => 234, 'es' => 2),
    'value3' => array('es' => 39)
);

printf("%-10s", "language");
$site_names = array_keys($sites);
foreach($site_names as $site_name)
{
    printf("%-10s", $site_name);
}
printf("\n%s\n", str_repeat('-', (count($site_names) + 1) * 10));

foreach($lang as $lang_short => $lang_long)
{
    printf("%-10s", $lang_short);
    foreach($sites as $site_name => $site_values)
    {
        printf("%-10d", isset($site_values[$lang_short]) ? $site_values[$lang_short] : 0);
    }
    printf("\n");
}

Вывод:

language  value1    value2    value3
----------------------------------------
de        54        0         0
es        0         2         39
nl        0         543       0
en        35        234       0
...