PHP数组演示

时间:2012-04-20 04:54:08

标签: php arrays

我有一个带有演示文稿的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 个答案:

答案 0 :(得分:1)

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

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

可能您可以使用 array_merge

$result = array();

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

答案 1 :(得分: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']);
}

答案 2 :(得分: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']
                   );
}

答案 3 :(得分:0)

如果

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

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

  3. 然后你应该将主数组的数组键设置为水果名称的数组键,这样如果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),并且只设置值,如果它不是空的,等等。但那是更多的业务逻辑决策。