2014-02-13 3 views
-2

У меня есть так много данных, если выполнить отчетливый запрос, пример на рисунке a busy cat http://www.admedika2u.com/data-1.jpgкак сделать массив 4D с PHP

Я хочу группу окончательного статуса, которые имеют NodeId, portid и общее, которое означает общее состояние.

сделать массив как этот

[ 
    [a => b] => c 
] => d 

любые идеи ...?

+2

Какая идея вы хотите? Создание 4d массива в php точно такое же, как 3d и 2d и 1d. – zerkms

+0

Почему вы не используете массив объектов? – user1534664

+1

'$ array ['a'] ['b'] ['c'] = 'd';' Вы можете идти так глубоко, как хотите. Они - одно и то же. –

ответ

1
$result = array(); 
while ($row = $db->fetch_assoc()) { 
    $total = $row['total']; 
    $port = $row['PortID']; 
    $node = $row['NodeID']; 
    $final = $row['FinalStatus']; 
    if (!isset($result[$total])) { 
     $result[$total] = array(); 
    } 
    if (!isset($result[$total][$port])) { 
     $result[$total][$port] = array(); 
    } 
    $result[$total][$port][$node] = $final; 
} 
+0

. Я попробую его. Thx for share –

+0

Я не получил права на капитализацию в 'PortID' и' NodeID'. Попробуйте обновление. – Barmar

+0

да, вы правы –

0

В php вы можете поместить столько измерений в массив, сколько хотите. Здесь, похоже, вам нужен трехмерный массив, который будет хранить значения (четвертое значение).

Если у вас есть переменные $ final_status $ node_id, $ port_id и $ total_status вы можете установить их в многомерный массив как это:

$my_array[$final_status][$node_id][$port_id] = $total_status; 

Если перебрать и сделать это со всем в вашей таблице вы может позже посмотреть на total_status с фактическими долинами:

$total_status = $my_array[55][2000][32] 

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

+0

вот почему я спрашиваю, потому что в базе нет класса –

Смежные вопросы