2012-04-20 86 views
0

我有一個PHP陣列介紹如下: -PHP陣列呈現

<?php 
    $ads = array(); 
    $ads [] = array( 
    'name' => 'Apple', 
    'duration' => '3', 
    'price' => "$5" 
); 

    $ads [] = array( 
    'name' => 'Orange', 
    'duration' => '2', 
    'price' => "$10" 
); 

    $ads [] = array( 
    'name' => 'Banana', 
    'duration' => '5', 
    'price' => "$6" 
); 

,然後,我想從數據庫替換動態數據的靜態數據: -

$sql = "SELECT * from tb_fruit order by fruit_id ASC"; 
$result = mysql_query($sql_approve, $conn_fruit); 

while($record = mysql_fetch_array($result)) 
{ 
$fruit_id = $record['fruit_id']; 
$fruit_name = $record['fruit_name ']; 
$fruit_price= $record['fruit_price']; 
$fruit_duration= $record_approve['fruit_duration']; 
} 

其實,我應該如何將兩個演示文稿結合在一起?謝謝!

+0

這是否應該像一個「默認數據集」,以防萬一您的表沒有您所謂的「動態數據」? – Blake 2012-04-20 04:56:49

+1

**請停止使用古老的'mysql_ *'函數編寫新代碼**不再維護它們並且社區已經開始[棄用過程](http://news.php.net/php.internals/53799) 。相反,您應該瞭解'準備好的語句'並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/mysqli)。 – 2012-04-20 05:07:49

回答

1

如果你想獲得一個與第一個示例中的結構類似,您可以修改第二個以創建新陣列,並將其附加到現有的$ads陣列。

$sql = "SELECT * from tb_fruit order by fruit_id ASC"; 
$result = mysql_query($sql_approve, $conn_fruit); 

$ads = array(); 
while($record = mysql_fetch_array($result)) 
{ 
    $ads[] = array(
       'name' => $record['fruit_name'], 
       'price' => $record['fruit_price'], 
       'duration' => $record['fruit_duration']); 
} 
+0

其實我想生成一個XML文件;我的代碼有什麼問題嗎? $ doc = new DOMDocument(); $ doc-> formatOutput = true; $ r = $ doc-> createElement(「ads」); $ doc-> appendChild($ r); foreach($ ads as $ ad) { $ b = $ doc-> createElement(「ad」); – Ham 2012-04-20 05:24:41

+0

$ name = $ doc-> createElement(「name」); $ name-> appendChild( $ doc-> createTextNode($ ad ['name']) ); $ b-> appendChild($ name); $ duration = $ doc-> createElement(「duration」); $ duration-> appendChild( $ doc-> createTextNode($ ad ['duration']) ); $ b-> appendChild($ duration); $ price = $ doc-> createElement(「price」); $ price-> appendChild( $ doc-> createTextNode($ ad ['price']) ); $ b-> appendChild($ price); $ r-> appendChild($ b); } echo $ doc-> saveXML(); $ doc-> save(「write.xml」) – Ham 2012-04-20 05:24:49

+0

你可能想看看這個:http://stackoverflow.com/questions/3755952/save-array-as-xml – 2012-04-20 05:29:10

1

遍歷所有的結果可以修改(只提供所需要的屬性是在查詢中獲取)

$fruit = array();  
while($record = mysql_fetch_array($result)) 
    { 
      $fruit[] = $record; 
    } 

可能是你可以使用array_merge

$result = array(); 

$result = array_merge($ads,$fruit); 
0

所以,你想與數據庫中的信息來填充你的「廣告」陣列?它似乎相當反直覺的看到,因爲mysql_fetch_array已經返回一個完全足夠了關聯數組,但在這裏你去:

$sql = "SELECT * from tb_fruit order by fruit_id ASC"; 
$result = mysql_query($sql_approve, $conn_fruit); 
$ads = array(); 

while($record = mysql_fetch_array($result)) 
{ 
    $ads[] = array (
         'name' => $record['fruit_name'], 
         'price' => $record['fruit_price'], 
         'duration' => $record['fruit_duration'] 
        ); 
} 
0

如果

  1. 初始陣列不只是一個例子,但是默認的數據,你可能與分貝數據覆蓋,並且

  2. 果實名是唯一的(各種各樣的主鍵)

然後您應該將主數組的數組鍵設置爲水果名稱的數組鍵,這樣如果數據庫具有不同的值,它將自動被覆蓋,否則將被單獨保留。像這樣:

$ads ['Apple'] = array( 
    'duration' => '3', 
    'price' => "$5" 
); 

    $ads ['Orange'] = array( 
    'duration' => '2', 
    'price' => "$10" 
); 

    $ads ['Banana'] = array( 
    'duration' => '5', 
    'price' => "$6" 
); 


$sql = "SELECT * from tb_fruit order by fruit_id ASC"; 
$result = mysql_query($sql_approve, $conn_fruit); 

$ads = array(); 
while($record = mysql_fetch_array($result)) 
{ 
    $ads[$record['fruit_name']]['price'] = $record['fruit_price']; 
    $ads[$record['fruit_name']]['duration'] = $record['fruit_duration']; 
} 

現在,如果「蘋果」是在分貝,價格和持續時間會被覆蓋,但除此之外,它會留在你的查詢面前。

您可以更進一步,查詢返回的價格和持續時間檢查爲空值(Null,「」,0),並且僅在非空值等情況下設置該值。但是,更多的是商業邏輯決策。