Прекрасно печатать смешанный многомерный массив PHP - PullRequest
1 голос
/ 13 февраля 2012

Изо всех сил пытаюсь разобраться с этими массивами MD, надеясь, что кто-то может помочь.У меня есть файл 'config', который выглядит следующим образом:

$clusters = array(
    "clustera" => array(
        '101',
        '102',
        '103',
        '104',
        '105',
        '106',
        '107',
        '108'
    ),
    "clusterb" => array(
        '201',
        '202',
        '203',
        '204',
        '205',
        '206',
        '207',
        '208'
    ),
    "clusterc" => array(
        '301',
        '302',
        '303',
        '304'
    ),
    "clusterd" => array(
        '401',
        '402',
        '403',
        '404'
    )
);

Затем мне нужно создать функцию, которая печатает ключи массива первого уровня, а затем значения второго уровня.Помимо того, что это практическая проблема для меня сейчас, я думаю, зная, что решение, вероятно, цементирует фрагментированные части моего мозга:)

Так что результат должен быть чем-то вроде (обернутым в некоторые HTML-вещи, но, на данный момент):

кластера 101 102 103 104 105 106 107 108 clusterb 201 202 203 204 205 206 207 208 и т. д.

Спасибо!

1 Ответ

2 голосов
/ 13 февраля 2012

Это простой вложенный цикл foreach:

// Outer loop prints cluster name as array key
foreach ($clusters as $cluster => $array) {
  echo "$cluster: ";
  // Inner loop prints space-separated array values
  foreach ($array as $val) {
    echo "$val ";
  }
}

Это также можно сделать без внутреннего цикла, используя implode(), если вам действительно нужны только разделенные пробелом значения:

// Outer loop prints cluster name as array key
foreach ($clusters as $cluster => $array) {
  // implode() with a space, and add a trailing space to separate the clusters....
  echo "$cluster: " . implode(" ", $array) . " ";
}

// clustera: 101 102 103 104 105 106 107 108 clusterb: 201 202 203 204 205 206 207 208 clusterc: 301 302 303 304 clusterd: 401 402 403 404
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...