2014-07-25 118 views
0

创建子阵列运气不佳,部分原因是我没有完全掌握密钥的工作原理。用PHP创建子阵列

这里就是我想要做:

$sql = "select * from products"; 
$db->query($sql); 
$products = $db->rows(); 

foreach($products as $key=>$row) { 

    $sql = "select * from sub_products WHERE productid = " . (int)$row['ID'] . ""; 
    $db->query($sql); 
    $subproducts = $db->rows(); 

    $products[$key]['subproducts'] = $subproducts; 

    foreach($products[$key]['subproducts'] as $rr=>$x) { 

     $sql = "select * from subsubproducts WHERE subproducts = " . (int)$x['ID'] . ""; 
     $db->query($sql); 
     $subsubproducts = $db->rows(); 

     $products[$key]['subproducts']['subsubproducts'] = $subsubproducts; 
    } 

} 

我没有真正掌握关键的概念,在这里等于是我有一个很难理解如何插入子阵列到另一个子阵列。

目前,上面的代码不是将subsubproducts数组作为数组/项目放置在子产品数组中,而是将其标记为另一个项目/数组。即在子产品您有:

subproduct1
subproduct2
subsubproducts

而应该是:

subproduct1
--- subsubproductslisting

subproduct2
--- subsubproductslisting。

回答

3

你几乎得到了它,你需要做的仅仅更换此:

$products[$key]['subproducts']['subsubproducts'] = $subsubproducts;

与此:

$products[$key]['subproducts'][$rr]['subsubproducts'] = $subsubproducts;

在第二foreach循环

+0

+1只是勉强打败它;) –

+0

啊!!!非常感谢。现在完美感觉! – CRAIG

2

如果我遵循你的思路,它应该像识别钥匙一样容易,并在第二个循环中用它来识别y正确的数组。

$products[$key]['subproducts'][ $rr ]['subsubproducts'] = $subsubproducts; 

在背景:

$sql = "select * from products"; 
$db->query($sql); 
$products = $db->rows(); 

foreach($products as $key=>$row) { 

    $sql = "select * from sub_products WHERE productid = " . (int)$row['ID'] . ""; 
    $db->query($sql); 
    $subproducts = $db->rows(); 

    $products[$key]['subproducts'] = $subproducts; 

    foreach($products[$key]['subproducts'] as $rr=>$x) { 

     $sql = "select * from subsubproducts WHERE subproducts = " . (int)$x['ID'] . ""; 
     $db->query($sql); 
     $subsubproducts = $db->rows(); 

     $products[$key]['subproducts'][ $rr ]['subsubproducts'] = $subsubproducts; 
    } 

} 
+0

感谢设置风帆... – CRAIG

1

你加入适量深入到阵列,你的逻辑上下文毗邻。

foreach($products[$key]['subproducts'] as $key=>$row)将分配索引到$key和值为$row为每个迭代。

foreach($products[$key]['subproducts'] as $rr => $x)将为每次迭代分配索引$rr$x的值。

当您分配给$products[$key]['subproducts']['subsubproducts']时,您正在为subproducts级别的密钥subsubproducts分配值。

分配更改为:

$products[$key]['subproducts'][$rr]['subsubproducts'] = $subsubproducts; 

应该给你想要的结果。

+0

感谢您提供额外的信息。一旦我在Jeffan的回答中看到它,对我来说就是有意义的。 – CRAIG