2011-11-18 78 views
4

我需要以形成多维数组如下格式但是我无法找出算法PHP多维数组算法?

array(
     [0]=>array(
      "id"=>"1","data"=>array([0]=>array("kid"=>"434","k"=>"Ali","m"=>"msj1"), [1]=>array("kid"=>"344","k"=>"Dali","m"=>"msj3")), 
     [1]=>array(
      "id"=>"2","data"=>array([0]=>array("kid"=>"347","k"=>"Cenk","m"=>"msj2"), [1]=>array("kid"=>"345","k"=>"Tan","m"=>"msj4"))) 

数据来自MySQL查询象下面这样:

SELECT小子,K,M,ID FROM表1 WHERE RID = 1 ORDER BY(ID)

样本数据:

id kid k m 
1 434 Ali msj1 
2 347 Cenk msj2 
1 344 Dali msj3 
2 345 Tan msj4 

PHP环路如下:

do { 
//whatever i tried here failed :(
} while ($t = mysql_fetch_assoc($r_tav)); 

我希望我能够理解多维数组更好地与这个样本

+0

做的,而不是在这里你的朋友,你将不能访问$ T数组中的循环。 –

+0

AliAktaş,请编辑示例数组,所以我可以更好地帮助 –

+0

我认为应该有一个虚拟变量来检查“id”是否改变。取决于id的变化,应该形成保存其他数据数组的新数组。但一些如何我不能写下代码 – aliaktas

回答

4
$arrRows = mysql_fetch_array($r_tav); 
$arrRowData = array(); 
$arrRowDataFinal = array(); 
foreach ($arrRows as $key => $value){ 
    $arrRowData[$value['id']][] = array("kid"=>$value['kid'],"k"=>$value['k'],"m"=>$value['m']); 
} 
foreach($arrRowData as $key => $value){ 
    $arrRowDataFinal[] = array('id' => $key, 'data' => $value); 
} 
+0

我试过代码,我以正确的格式生成数组,但它无法收集常见“ID”数组中的数据。我将致力于生成正确的输出 – aliaktas

+0

您的解决方案是正确的,除了我们需要将原始数据的数组形成到$ arrRows ..我使用代码 '$ t = mysql_fetch_assoc($ r_tav); $ row_sayi = mysql_num_rows($ r_tav);如果($ row_sayi> 0){ } {tav_a [] = $ t; $ op = $ t; } while($ t = mysql_fetch_assoc($ r_tav)); } $ arrRows = $ tav_a;' 更好的方法产生上面的数组是受欢迎的.. tahnks Poonam,感谢stackoverflow – aliaktas

4

这似乎是所有你想要的是:

while ($t = mysql_fetch_assoc($r_tav)){ 
    $arr[] = $t; 
} 

$arr会包含你的阵列

重新阅读这个问题后,它似乎并不完全是你想要的结构,但它可以简单地变成:

while ($t = mysql_fetch_assoc($r_tav)){ 
    $arr[] = array('id' => $r_tav['id'], 
        'data' => array('kid' => $r_tav['kid'], 
            'k' => $r_tav['k'], 
            'm' => $r_tav['m'])); 
} 
+0

我希望它可以是这么简单,但你可以看到有嵌套数组,包括与相同的ID相关的数据 – aliaktas

+0

我更新了一个片段,应该产生正确的数组这个帖子 –

+0

这一个是怎么样,但我怎么能收集数据与相同的ID在一个名为“数据”的数组? – aliaktas