@MrFlatman
Студент

Как правильно вывести ассоциативный массив в 2 ряда по 3 элемента?

Всем привет. Стоит задача создать и заполнить ассоциированный массив в котором именами элементов - название страны, населения и название столицы. Вывести из массива таблицу в три строки по две ячейки в каждой. С этой задачей я справился, а вот изменить таблицу - 2 строки по 3 элемента. Вывести в первой строке только имена элементов, во втором - значение, я совсем не понимаю что тут они хотят. Подскажите, пожалуйста, как это реализовать?
Код первой части:
$names_с["Country_1"]="Украина, 46 млн., Киев";
    $names_с["Country_2"]="Нидерланды, 17.02 млн., Амстердам";
    $names_с["Country_3"]="Норвегия, 5.233 млн., Оспо";
    echo "<table style=\"border:1px solid;\">";
    foreach ($names_с as $key => $value_с) {
        echo "$key $value_с</br>";
        }
    echo "</table>";
  • Вопрос задан
  • 363 просмотра
Решения вопроса 1
@choupa
Архитектор (обычный, который строит)
Использовать ассоциативный массив, чтобы дать ключам имена Country_1, Country_2, ... нет никакого смысла. Тогда уж их можно просто пронумеровать. Подозреваю, что от вас хотят чего-то такого:
$contry_data[ 0 ] = array( 'country' => 'Украина', 'population' => 46, 'capital' => 'Киев' );
$contry_data[ 1 ] = array( 'country' => 'Нидерланды', 'population' => 17.02, 'capital' => 'Амстердам' );
$contry_data[ 2 ] = array( 'country' => 'Норвегия', 'population' => 5.233, 'capital' => 'Осло' );

Ну или правильнее даже так:
$contry_data = array (
    'Украина' => array (  'population' => 46, 'capital' => 'Киев' ),
    'Нидерланды' => array (  'population' => 17.02, 'capital' => 'Амстердам' ),
    'Норвегия' => array (  'population' => 5.233, 'capital' => 'Осло' ),
);


У вас 3 типа данных (название страны, население, столица) и 3 элемента данных (Украина, Нидерланды и Норвегия). Не понятно, о каких таблицах хоть 2х3, хоть 3х2 идёт речь. Тут как ни поверни, получается 3х3.

echo "<table><tr><th>страна</th><th>население</th><th>столица</th></tr>";
foreach ( $contry_data as $country => $data )  {
    echo "<tr><td>".$country."</td>";
    foreach ( $data as $key => $value )
        echo "<td>".$value."</td>";
    echo "</tr>";
}
echo "<table>";


Ну а для транспонированного вида я ничего лучше не придумал:
echo "<table><tr><td>страна</td>";
foreach ( $contry_data as $country => $data )
    echo "<td>".$country."</td>";
echo "</tr><tr><td>население</td>";
foreach ( $contry_data as $country => $data )
    echo "<td>".$data[ 'population' ]."</td>";
echo "</tr><tr><td>столица</td>";
foreach ( $contry_data as $country => $data )
    echo "<td>".$data[ 'capital' ]."</td>";
echo "</tr><table>";
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы