PHP:排序的MySQL结果到多维数组 [英] PHP: Sorting MySQL result to multi-dimensional array

查看:159
本文介绍了PHP:排序的MySQL结果到多维数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

现在我试着整理的MySQL结果通过到多维数组类型在SQL结果
所以,这是我的code:

 函数getTableValues​​($ TABLE_NAME)
{
// $链接= connect_db();
    $ front_end_query =SELECT * FROM`$表格名WHERE``type` ='front_end'。;
    $ front_end_query_result =的mysql_query($ front_end_query);    $ cur_row = 0;
    / *而($行= mysql_fetch_assoc($ QueryResult中))
    {
        $值= $行;
        $ cur_row ++;
    } * /
    $ front_end = mysql_fetch_assoc($ front_end_query_result);
    $ I = 0;
    而($行= mysql_fetch_assoc($ front_end_query_result)){
        #如果($行['类型'] ===front_end'){
        #$线[$行[型] [$行['名'] = $行['值'];
        #$线[$行[型] [$行['名'] ['递减'] = $行['说明'];
        #$线[$行[型] [$行['名'] ['VISIBLE_NAME'] = $行['VISIBLE_NAME'];
        #$线[$行[型] [$行['名'] ['write_roles'] = $行['write_roles'];
        #$线[$行[型] [$行['名'] ['read_roles'] = $行['read_roles'];
        #}        $值['front_end'] [$行['名'] = $行;
        $ I ++;
    }    返回$价值;
}

和我的MySQL表:

  ID类型write_roles read_roles名称值说明VISIBLE_NAME
1 front_end 0任何所有权sometitle exampletitle标题
2 front_end 0任何说明somedesc例子说明

这就是我想要得到什么:

  $配置[(SOMETYPE)] [(SomeName)] =(行值)
$配置[(SOMETYPE)] [(SomeName)] [(SomeOption)] =(选项值)

例如: $配置['front_end'] ['标题'] ['说明'] 的回报 exampletitle

我怎么能这样做?

UPD0:所以我试图回声我的阵列的foreach ,它的返回的只是一个行的从我的数据库。
我做错了吗?


解决方案

  $值=阵列(); //基本阵列
而($行= mysql_fetch_assoc($ front_end_query_result)){//获取行
    //将基本阵列中创建下名称的新数组
    $值[$行['名'] =阵列();
    //为结果集中的每个项目,将其添加到新数组
    的foreach($线为$关键=> $值){
        $值[$行[名称] [$关键] = $价值;
    }
}

Now I'm tryin' to sort MySQL result to multi-dimensional array by type line in SQL
so, that's my code:

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;
}

And my MySQL table:

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     

And that's what I want to get:

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

E.g.: $config['front_end']['title']['description'] that returns exampletitle

How I can do that?

UPD0: so I tried to echo my array with foreach, and it's returned just one row from my DB. What I doing wrong?

解决方案

$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;
    }
}

这篇关于PHP:排序的MySQL结果到多维数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆