2012-04-20 84 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),并且仅在非空值等情况下设置该值。但是,更多的是商业逻辑决策。