2013-10-18 104 views
0

我需要用foreach循环和while循环创建一个多维数组。多维数组与foreach +,而

第一个数组包含此:

Array 
(

    [0] => 13-10-14 
    [1] => 13-10-15 
    [2] => 13-10-16 
    [3] => 13-10-17 
    [4] => 13-10-18 
    [5] => 13-10-19 
) 

我需要使它看起来像这样:

Array 
(

    [0] => Array 
     (
      [date] => 13-10-14 
      [id] => Array 
       (
        [0] => 012643 
        [1] => 012667 
        [2] => 013362 
        [3] => 016169 
        [4] => 016839 
        [5] => 035288 
        [6] => 035369 
        [7] => 037664 
        [8] => 038979 
        [9] => 039014 
        [10] => 039036 
        [11] => 039505 
       ) 

     ) 

) 

第一个数组我做的第二foreach循环我需要同时为这是一个SQL查询。

下面是代码:

foreach ($rs as $results) { 

    $rowT = $db->query("SELECT id FROM users WHERE LIMIT 10"); 

    while ($rsT = $db->fetch_assoc($rowT)) { 
    $results['id'][] = $rsT; 
    } 
    $l_array[] = $results; 
}## Heading ## 
print_r($l_array); 

将返回错误:

Fatal error: Can not use string offset to an array 
+0

您将在每次foreach()循环迭代时运行完全相同的查询,因此您每次都会获取/保存** SAME ** id值。而不是毫无意义地浪费资源。在循环外部运行查询,然后在其内部使用其结果,从而节省重复的毫无意义的查询。 –

+0

是的,但仅限于此示例。我在每个循环中使用带有参数的查询。谢谢。 –

回答

0

如果你的$ RS是这样的:

array([0] => 13-10-14 
     [1] => 13-10-15 
     [2] => 13-10-16 
     [3] => 13-10-17 
     [4] => 13-10-18 
     [5] => 13-10-19) 

你的foreach()将设置$结果到:13-10-15,13-10-16,等我认为这是你的错误,因为那些是字符串,而不是数组。这个如何:

$final_array = array(); 
foreach ($rs as $results) { 
    $tmp_array = array('date'=>$results); 
    $rowT = $db->query("SELECT id FROM users WHERE LIMIT 10"); 
    while ($rsT = $db->fetch_assoc($rowT)) { 
     $tmp_array['id'][] = $rsT; 
    } 
    $final_array[] = $tmp_array; 
}## Heading ## 
print_r($final_array); 
+0

谢谢,伙计。为我完美工作。 –