Loop Array в PHP - PullRequest
       7

Loop Array в PHP

0 голосов
/ 02 ноября 2018

как зациклить массив, если данные равны 1 или больше 1?

enter image description here

Я попробовал это с

foreach($array['bGeneral'] as $item) {
    echo $item['bItem'];
}

но для массивов с 1 данными ошибка

Ответы [ 2 ]

0 голосов
/ 04 ноября 2018

Не забывайте рекурсию - иногда это лучший выбор:

function scan_data($data, $path = null) {
    if (!is_array($data))
        echo "{$path} : {$data}\n";
    else
        foreach ($data as $k => $v)
            scan_data($v, $path . '/' . $k);
}

$data = [
    ['a' => 1,                    'b' => 2], 
    ['a' => ['c' => 3, 'd' => 4], 'b' => 5],
    ['a' => 1,                    'b' => ['e' => ['f' => 1, 'g' => 2], 'h' => 6] ]
   ];

scan_data($data);

Выход:

/ 0 / a: 1
/ 0 / b: 2
/ 1 / a / c: 3
/ 1 / а / д: 4
/ 1 / b: 5
/ 2 / a: 1
/ 2 / b / e / f: 1
/ 2 / б / е / г: 2
/ 2 / ч / ч: 6

0 голосов
/ 02 ноября 2018

В основном вам нужно проверить, является ли первый элемент $array['bGeneral'] массивом или значением данных, и, если это так, обработать данные по-другому. Вы можете попробовать что-то вроде этого:

if (isset($array['bGeneral']['bItem'])) {
    // only one set of values
    $item = $array['bGeneral'];
    // process item
}
else {
    // array of items
    foreach ($array['bGeneral'] as $item) {
        // process item
    }
}

Чтобы избежать дублирования кода, вы, вероятно, захотите поместить код обработки элемента в функцию.

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

if (isset($array['bGeneral']['bItem'])) {
    $array['bGeneral'] = array($array['bGeneral']);
}
foreach ($array['bGeneral'] as $item) {
    // process item
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...