首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何动态地将sql结果转换为多维数组?

如何动态地将sql结果转换为多维数组?
EN

Stack Overflow用户
提问于 2013-09-14 05:22:24
回答 3查看 125关注 0票数 5

这里是查询字符串.

代码语言:javascript
运行
复制
$query = "SELECT t.id, t.assignee, t.owner, 
            d.code, d.status, d.target_completion_date, 
            d.target_extension_date, d.submission_date, d.approval_date,
            d.revision_start_date, d.revision_completion_date, d.message, 
            ty.name, f.orig_name, f.new_name, 
            b.payment_date, b.discount, b.total_cost, b.amount_payed, b.edit_level, 
            b.billing_type, b.pages, b.words
      FROM tasks t
      INNER JOIN details d ON t.detail_id = d.id
      INNER JOIN billing b ON t.billing_id = b.id
      INNER JOIN TYPE ty ON d.document_type_id = ty.id
      INNER JOIN files f ON t.file_id = f.id
      WHERE t.assignee = 'argie1234'";

,这是我希望查询结果转化为.的数组。

代码语言:javascript
运行
复制
$user = array('allTask'=>array(array('taskid' => 1,
                                     'assignee'=>'argie1234',
                     'owner'=>'austral1000',
                     'details' => array( 'code' => 'E',
                     'status'=>'TC',
                     'targetCompletionDateUTC'=>'1379401200',
                     'targetExtentionDateUTC'=>'1379401200',    
                     'submissionDateUTC'=>'1379401200',
                     'approvalDateUTC'=>'1379401200',
                     'revisionStartDateUTC'=>'1379401200',
                     'revisionCompletionDateUTC'=>'1379401200',
                     'messageToEditor'=>'Please work on it asap.',
                     'documentType' => 'Thesis'),
                     'file' => array('orig_name' =>'originalname.docx',
                                     'new_name' => 'newname.docx'),
                         'billing'=>array('paymentDate'=>'July 26,2013 12:40',
                          'discount' => '0',
                           'totalRevisionCharge' => '$20.00',
                          'totalAmountPayed' => '$20.00',
                          'revisionLevel' => '1',
                          'chargeType'=> '1',
                          'numPages' => '60',
                          'numWords' => '120,000' ) ),

                  array('taskid' => 12, 
                                  'assignee'=>'argie1234',
                                  'owner'=>'usaroberto',
                  'details' => array( 'code' => 'E',
                  'status'=>'TC',
                  'targetCompletionDateUTC'=>'1379401200',
                  'targetExtentionDateUTC'=>'1379401200',   
                  'submissionDateUTC'=>'1379401200',
                  'approvalDateUTC'=>'1379401200',
                  'revisionStartDateUTC'=>'1379401200',
                  'revisionCompletionDateUTC'=>'1379401200',
                  'messageToEditor'=>'Please work on it asap.',
                  'documentType' => 'Thesis'),
                  'file' => array('orig_name' => 'originalname.docx',
                                 'new_name' => 'newname.docx'),
                          'billing'=>array('paymentDate'=>'July 26,2013 12:40',
                           'discount' => '0',
                           'totalRevisionCharge' => '$20.00',
                           'totalAmountPayed' => '$20.00',
                           'revisionLevel' => '1',
                           'chargeType'=> '1',
                           'numPages' => '60',
                           'numWords' => '120,000' ) ),

    'account' => array( 'username' => 'marooon55',
            'emailadd' => 'marooon@yahoo.com',
            'firstname' => 'Maroon',
            'initial' => 'E',
            'lastname' => 'Young',
            'country' => 'Australia',
            'gender' => 'M',
            'password' =>'360e2801190744a2af74ef6cbfdb963078b59709',
            'activationDate' => '2013-09-13 14:30:34') );

如何创建上面的数组?我确实知道如何定义多维数组,但遗憾的是,我很难动态地创建这个复杂的数组。作为一个初学者,我甚至不知道从哪里开始。

EN

回答 3

Stack Overflow用户

发布于 2013-09-14 05:31:10

下面是一个可以帮助你解决问题的例子。尝试从简单的多维数组开始,一旦你掌握了它,你就可以开始构建复杂的数组了。然后你会发现你想要构建的数组并不比你最初想象的那么困难。

$mycomplexarray =数组(‘key1’=>数组(‘val1’,'val2'),'key2‘=>数组(’val3‘,'val4’=>数组(‘val5’,'val6') );

票数 0
EN

Stack Overflow用户

发布于 2013-09-14 06:04:02

您可以像这里一样创建数组。我不会把整件事都写出来,但像这样的事.

代码语言:javascript
运行
复制
    $result = $mysqli->query($query); // however you query the db is up to you.
    $row = $result->fetch_assoc(); //same as query use your prefered method to fetch
    $user = array('allTask'=>array(array('taskid' => $row['id'],
                                 'assignee'=>$row['assignee'],
                 'owner'=>$row['owner'],
                 'details' => array( 'code' => $row['code'],
                 'status'=>$row['status'],

...etc,希望这对你有意义。

票数 0
EN

Stack Overflow用户

发布于 2013-09-14 06:10:09

首先设置一个结构数组,该数组定义将存储在以下子数组中的列

代码语言:javascript
运行
复制
$struc=array('Id'->0, 'assignee'->0, 'owner'->0, 
            'code'->'detail', 'status'->'detail', 'target_completion_date'->'detail', 
            'target_extension_date'->'detail', 'submission_date'->'detail', 'approval_date'->'detail',
            'revision_start_date'->'detail', 'revision_completion_date'->'detail', 'message'->'detail', 
            'name'->'file', 'orig_name'->'file', 'new_name'->'file', 
            'payment_date'->'billing', 'discount'->'billing', 'total_cost'->'billing', 'amount_payed'->'billing', 'edit_level'->'billing', 'billing_type'->'billing', 'words');

while ($a=mysqli_fetch_assoc($res))循环中,您现在可以使用此结构来决定是否要将元素直接存储在目标数组中,或者是否要将其放置在此结构数组中命名的子数组中。喜欢

代码语言:javascript
运行
复制
$res=mysqli_query($con,$sql);
$arr=array();
while($a=mysqli_fetch_assoc($res)) {
  // within result loop: $a is result from mysqli_fetch_assoc()
  $ta=array(); // temp array ...
  foreach ($a as $k => $v){
    if ($struc[$k]) $ta[struc[$k]][$k]=$v;
    else $ta[$k]=$v;
  }
  $arr[]=$ta;  // add to target array 
}

这是完整的代码,不需要更多。它是在我的iPod上输入的,所以还没有经过测试。

生成的数组应该与您的$user['allTask']数组等效。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18798605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档