2014-10-09 5 views
1

Теперь я пытаюсь сортировать MySQL результат многомерный массив по type линии в SQL
так, что мой код:PHP: Сортировка MySQL результат многомерный массив

function getTableValues($table_name) 
{ 
// $link = connect_db(); 
    $front_end_query = "SELECT * FROM `".$table_name."` WHERE `type` = 'front_end'"; 
    $front_end_query_result = mysql_query($front_end_query); 

    $cur_row = 0; 
    /*while ($line = mysql_fetch_assoc($queryresult)) 
    { 
     $values = $line; 
     $cur_row++; 
    }*/ 
    $front_end = mysql_fetch_assoc($front_end_query_result); 
    $i=0; 
    while ($line = mysql_fetch_assoc($front_end_query_result)){ 
     #if ($line['type'] === 'front_end'){ 
     # $line[$line['type']][$line['name']] = $line['value']; 
     # $line[$line['type']][$line['name']]['desc'] = $line['description']; 
     # $line[$line['type']][$line['name']]['visible_name'] = $line['visible_name']; 
     # $line[$line['type']][$line['name']]['write_roles'] = $line['write_roles']; 
     # $line[$line['type']][$line['name']]['read_roles'] = $line['read_roles']; 
     #} 

     $values['front_end'][$line['name']] = $line; 
     $i++; 
    } 

    return $values; 
} 

И мой MySQL таблицы:

id type  write_roles read_roles name  value  description  visible_name  
1 front_end 0   any  title  sometitle exampletitle  Title  
2 front_end 0   any  description somedesc example   Description  

И вот что я хочу получить:

$config[(someType)][(SomeName)] = (value of line) 
$config[(someType)][(SomeName)][(SomeOption)] = (value of option)  

E.g .: $config['front_end']['title']['description'], который возвращает exampletitle

Как я могу это сделать?

UPD0: поэтому я попытался echo мой массив с foreach, и он вернулся только одну строку из моей БД. Что я делаю неправильно?

+0

Вы только получаете одну строку, потому что вы звоните 'mysql_fetch_assoc ($ front_end_query_result)' до 'в то время как()', который принимает из первого ряда. Удалите это, и вы получите две строки. – Samsquanch

+0

@Samsquanch Я прокомментировал 'while()' перед тестированием –

+0

Если вы закомментируете это, тогда вы получите только один результат. Для этого и нужно время. 'mysql_fetch_assoc' возвращает только один результат. – Samsquanch

ответ

0
$values = array(); //base array 
while ($line = mysql_fetch_assoc($front_end_query_result)){ //fetch the rows 
    //in the base array create a new array under 'name' 
    $values[$line['name']] = array(); 
    //for each item in the result set, add it to the new array 
    foreach ($line as $key => $value) { 
     $values[$line['name']][$key] = $value; 
    } 
} 
+0

извините, но я не понимаю где я определяю '$ someResult' и' $ someIdentifier'? –

+0

Извините, просто показывался общий шаблон того, как сделать многомерный массив в 'php'. Используйте вторую форму для вашего конкретного случая. Я также отредактирую свой ответ, чтобы уточнить. –

+0

ok, но я не вижу, где мне нужно определить '$ someValue'. извините, но я действительно не могу понять ваш пример. –

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