2010-12-17 33 views
0

地狱再次,我想知道如何在foreach循环内添加数据到新的数组索引?如何添加到foreach循环中的多维数组上的新索引?

代码我有ATM是,

// Connect to the database to gather all data pertaiing to the link in question 
$assoResult = mysql_query("SELECT * FROM associate_users"); 
while ($assoRow = mysql_fetch_field($assoResult)) { 
    $resultArray[] = $assoRow->name; 
} 

// Connect to the database to gather all data pertaiing to the link in question 
$assoResult2 = mysql_query("SELECT * FROM associate_users WHERE id='$getID'"); 
while ($assoRow2 = mysql_fetch_object($assoResult2)) { 

    foreach ($resultArray as $row) { 
     $array = array(array(1 => $assoRow2->$row, 2 => $row,),); 
     echo "<br />"; print_r($array); 
    }    
} 

下面是来自于 “回声 ”BR />输出的数据“;的print_r($阵列);”线。

============================================== ===================

Array ([0] => Array ([1] => 1 [2] => id)) 
Array ([0] => Array ([1] => Bob[2] => contactName)) 
Array ([0] => Array ([1] => Bob's Tyres [2] => company)) 
Array ([0] => Array ([1] => XXXXXXXXXXXXXX [2] => address1)) 
Array ([0] => Array ([1] => XXXXXXXXXXXXXX [2] => address2)) 
Array ([0] => Array ([1] => XXXXXXXXX [2] => address3)) 
Array ([0] => Array ([1] => XXXXXX [2] => postcode)) 

正如你可以看到阵列正在创建一个新的一遍又一遍,我需要的是对上述数据每个循环增加一维索引键,所以它看起来像...

============================= ====================================

Array ([0] => Array ([1] => 1 [2] => id)) 
Array ([1] => Array ([1] => Bob[2] => contactName)) 
Array ([2] => Array ([1] => Bob's Tyres [2] => company)) 
Array ([3] => Array ([1] => XXXXXXXXXXXXXX [2] => address1)) 
Array ([4] => Array ([1] => XXXXXXXXXXXXXX [2] => address2)) 
Array ([5] => Array ([1] => XXXXXXXXX [2] => address3)) 
Array ([6] => Array ([1] => XXXXXX [2] => postcode)) 

在此先感谢您我没有办法让这个工作和绝望。

丹。

回答

2

更改分配代码的一部分值

$count=0; 
    foreach ($resultArray as $row) { 
      $array[$count][1] = $assoRow2->$row 
      $array[$count][2]=$row; 
      $count++; 
      echo "<br />"; print_r($array); 
     } 
+0

你的代码工作完美,谢谢你的帮助:) – zealisreal 2010-12-17 11:46:39

0
//extra code.declaring array 
$array = array(); 
while ($assoRow2 = mysql_fetch_object($assoResult2)) { 
    foreach ($resultArray as $row) { 
// 1st parameter is the array name, here array name is array .give gd name according to use 
     array_push($array,array(1 => $assoRow2->$row, 2 => $row,)); 
     echo "<br />"; print_r($array); 
    }    
} 
1

这段代码可以让你你要的输出不低效率使用两个查询:

// Connect to the database to gather all data pertaining to the link in question 
$result = mysql_query("SELECT * FROM associate_users WHERE id=" . (int)$getID); 

$resultArray = array(); 
$resultCount = 0; 
$row = mysql_fetch_assoc($result); 

$count = 0; 
foreach ($row as $key => $value) { 
    $temp = array(); 
    $temp[$count] = array(1 => $value, 2 => $key); 
    $count++; 

    echo "<br />"; print_r($temp); 
} 

为什么你要它像这,我不知道。

+0

我不确定你是否注意到我在第一个sql查询中使用了“mysql_fetch_field”?我使用2是因为在一个查询中使用字段获取,而在另一个查询中使用标准对象获取,如果它们都可以组合成1个查询,我想知道它是如何的(除非你已经证明了上述内容,而且我根本看不到)? – zealisreal 2010-12-21 16:17:23

+0

除非你有其他代码正在做别的事情,我们看不到,应该不需要使用第一个查询和'mysql_fetch_field'来获取所有的字段名称。我的代码在这里应该会得到与您在问题中发布的期望输出相同的输出。您的问题中的代码将从'associate_users'表中获取每个链接,仅用于获取单个链接。如果你的'associate_users'表变大,这可能会减慢你的页面。如果你知道*你的桌子会保持小巧,只要坚持你有的东西,如果它为你工作。 – thirtydot 2010-12-21 18:06:35

相关问题