0

我有一个 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']; 
}

实际上,我该如何将这两个演示文稿结合在一起?谢谢!

4

4 回答 4

1

可以修改对结果的迭代(只要在查询中获取所需的属性)

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

可能你可以使用array_merge

$result = array();

$result = array_merge($ads,$fruit);
于 2012-04-20T04:57:21.430 回答
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']);
}
于 2012-04-20T04:58:07.483 回答
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']
                   );
}
于 2012-04-20T05:00:35.390 回答
0

如果

  1. 初始数组不仅仅是一个示例,而是您可能会用 db 数据覆盖的默认数据,以及

  2. 水果名称是唯一的(各种主键)

那么您应该将主数组的数组键设置为水果名称的键,这样如果 db 具有不同的值,它将自动被覆盖,否则将不理会。像这样:

  $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'];
}

现在,如果“Apple”在数据库中,价格和持续时间会被覆盖,否则,它会保留在您在查询之前设置的位置。

您可以更进一步,让查询返回的价格和持续时间都检查一个空值(Null、“”、0),并且仅在它不为空时才设置该值等。但这更多的是业务逻辑决策。

于 2012-04-20T05:14:29.547 回答