2016-12-08 146 views
0

即时尝试插入一个数组到我的多维数组中,在代码的第一个sql部分它工作正常,但是当我使用array_splice它似乎并不明白,即时通讯尝试插入整个阵列,只是提出了其他的东西。 任何人都可以帮助我得到正确的答案?在多维数组中插入数组

这是结果我尝试获得:

Array 
(
[0] => Array 
    (
     [0] => 1 
     [1] => företag1 
    ) 
[1] => Array 
    (
     [0] => 3 
     [1] => subföretag1 
    ) 

[2] => Array 
    (
     [0] => 5 
     [1] => subföretag2 
    ) 

[3] => Array 
    (
     [0] => 6 
     [1] => subföretag3 
    ) 

[4] => Array 
    (
     [0] => 2 
     [1] => företag2 
    ) 

[5] => Array 
    (
     [0] => 4 
     [1] => företag3 
    ) 
) 

,这就是我得到:

Array 
(
[0] => Array 
    (
     [0] => 1 
     [1] => företag1 
    ) 

[1] => 3 
[2] => 6 
[3] => subföretag3 
[4] => 5 
[5] => subföretag2 
[6] => subföretag1 
[7] => Array 
    (
     [0] => 2 
     [1] => företag2 
    ) 

[8] => Array 
    (
     [0] => 4 
     [1] => företag3 
    ) 

) 

这是数组即时通讯使用:

$partarray=array($row['id'],$row['name']); 
in the first part: $partarray=array(random number from db,random name); 
in the second part: $partarray=array(random number from db,random name); 

这是当前使用的代码:

$departments = array(); 
$sth = $pdo->prepare('SELECT id, name FROM departments WHERE companyid = 1 AND subgroupof = 0'); 
$sth->execute(); //executes the array 
while($row = $sth->fetch()){ 
    $partarray=array($row['id'],$row['name']); 
    array_push($departments, $partarray); 
} 
$sth = $pdo->prepare('SELECT * FROM departments WHERE companyid = 1 AND subgroupof != 0'); 
$sth->execute(); //executes the array 
while($row = $sth->fetch()){ 
     $partarray=array($row['id'],$row['name']); 
     array_splice($departments, $row['subgroupof'], 0, $partarray); 
} 
print("<pre>".print_r($departments,true)."</pre>"); 
+0

请编辑您的原始2阵列的样子。 – bugfroggy

+0

可能你不明白array_splice是做什么的。它取代了数组中的发生。由于你的2个查询不应该返回相同的数据,你想用什么替换? – RiggsFolly

+0

PS:在这个脚本中有很多不必要的代码,也表明缺乏理解。也许如果你描述你是在用言语来做什么的话,别人会把你放在正确的道路上 – RiggsFolly

回答

1

试试这个。

$departments = array(); 
$sth = $pdo->prepare('SELECT id, name FROM departments WHERE companyid = 1 AND subgroupof = 0'); 
$sth->execute(); //executes the array 

while($row = $sth->fetch()){ 
    $departments[] = array($row['id'], $row['name']); 

    $sub_sth = $pdo->prepare(
     "SELECT id, name FROM departments WHERE companyid = 1 AND subgroupof = {$row['id']}" 
    ); 

    $sub_sth->execute(); //executes the array 
    while($sub_row = $sub_sth->fetch()) { 
      $departments[] = array($sub_row['id'], $sub_row['name']); 
    } 
} 

print("<pre>".print_r($departments,true)."</pre>"); 
+0

很确定这是他说他想做的事。但是当他得到这个时,我敢打赌这对他来说不会有多大用处。但这不是我们的问题,直到他回来,并问他的下一个问题 – RiggsFolly

+0

@mowshon是这正是我想要的。谢谢。你能向我解释一下那些{row} ['id']做的或者他们做了什么吗? – Munik

+0

@RiggsFolly我不明白为什么你必须这么粗鲁,只是因为我没有在这方面的知识水平。如果我不知道如何解决问题并且不能提出要求,我该如何学习如何去做? – Munik