2013-07-01 2 views
2

Я немного новичок в многомерных массивах и хотел бы посмотреть, правильно ли я делаю это. желательно, я хотел бы назвать массивы в основном массиве для удобства использования.Многомерный массив PHP из результатов базы данных

$unique_array = array(
    username=>array(), 
    user_id=>array(), 
    weeknumber=>array() 
    ); 

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

while($row = mysql_fetch_array($query)) //yes, I know mysql is deprecated 
{ 
$unique_array[] = username=>$row['username'], user_id=>$row['user_id'], week number=>['weeknumber']; 
} 

Я не уверен, если я помещаю значение в массиве внутри цикла в то время как правильно, или если это нужно сделать другим способом. Я не мог найти никаких ресурсов, которые я мог бы легко понять в SO или где-либо еще, чтобы иметь дело с результатами запроса в именованном массиве в многомерном массиве.

EDIT FOLLOW UP QUESTION: Мне также нужно проверить массив на повторяющиеся значения, потому что будет несколько значений, которые будут точно такими же, но я хочу только одного из них.

Любая помощь приветствуется!

EDIT РЕШЕНИЕ:

Изменяя ответ, который я смог создать код, чтобы соответствовать моим потребностям.

Инициализация массива:

$unique_array = array(
    'username'=>array(), 
    'user_id'=>array(), 
    'weeknumber'=>array() 
    ); 

Создание массива из внутри цикла в то время:

while($row = mysql_fetch_array($query)) 
{ 
$unique_array[] = array('username'=>$row['username'], 'user_id'=>$row['user_id'], 'weeknumber'=>$row['weeknumber']); 
} 

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

+0

В каком направлении вы пытаетесь развить массив по полям или по строкам? –

+0

Поля - я думаю, что у меня есть это сейчас! Я отправлю код немного. – RobDubya

ответ

6

Является ли верхний уровень ассоциативным массивом или числовым массивом?

Если это ассоциативный массив, он должен иметь структуру, как это:

$unique_array = array(
    'username'=>array('John','Mike',...), 
    'user_id'=>array(1,2,3,...), 
    'week_number'=>array(1,2,3,...) 
); 

Или, если это числовой массив, он должен иметь структуру, как это:

$unique_array = array(
    array('username'=>'John', 'user_id'=>1, 'week_number'=>1), 
    array('username'=>'Mike', 'user_id'=>2, 'week_number'=>2), 
    array('username'=>'Sam', 'user_id'=>3, 'week_number'=>3), 
    ... 
) 

для первого введите код:

while ($row = mysql_fetch_assoc($query)) { 
    $unique_array['username'][] = $row['username'], 
    $unique_array['user_id'][] = $row['user_id'], 
    $unique_array['week_number'][] = $row['week_number'], 
} 

для второго типа, это что-то вроде вашего кода. Но есть некоторые проблемы синтаксиса:

while($row = mysql_fetch_array($query)) //yes, I know mysql is deprecated 
{ 
    $unique_array[] = array('username'=>$row['username'], 'user_id'=>$row['user_id'], 'week_number'=>$row['weeknumber']); 
} 
+0

Это ассоциативный массив, но я точно не знаю, что его заполнит. Итак, для чего-то вроде «username» => array («John», «Mike», ...) Я не знаю, кто будет Джон или Майк, или сколько будет. Могу ли я оставить его как «username» => array()? – RobDubya

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