2010-12-17 121 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