PHP:需要一个有价格的文件

时间:2013-10-29 18:27:13

标签: php html class include require

我正在实施一个包含少量产品的小型在线购物页面。

<?php  
$item_name = "lamp";
$item_price = 29.99;
$item_category = "furniture";
$item_Dollar = 29;
$item_Cents = 99;
?>

我该如何解决?它只有2种产品类型,基本上只有价格不同,所以不需要数据库。我想要包含一个包含所有价格的.php文件,并在那里有一个switch($id)之间的函数并重新分配值。

<?php
    function selectProduct($id) {

     switch($id) {
          case 1:
              $item_name = "lamp";
              $item_price = 19.99;
              $item_category = "furniture";
              $item_Dollar = 19;
              $item_Cents = 99;
              break;

          case 2:
              // and so on...

          default: break;
     }
    }
?>

逻辑进入相应的情况但不重新分配实例变量。出于某种原因,当我尝试在require_once(pricings.php);之后在另一个页面上访问它们时,它们是空的。我对PHP不太熟悉,可能从代码中看出来很明显。我做错了什么?

5 个答案:

答案 0 :(得分:1)

我会构建一个项目数组,其中每个元素都是一个键/值对,键是项目ID,值是项目属性的另一个键/值对数组:

$items = array(
    1 => array(
        'name' => 'lamp',
        'price' => '19.99',
        'category' => 'furniture',
    ),
    2 => array(
        'name' => 'chair',
        'price' => '29.99',
        'category' => 'furniture',
    ),
);

然后,您可以使用其产品ID作为索引来简单地引用该数组:

$id = 1;
echo "Name is: " . $items[$id]['name'];
echo "Price is: " . $items[$id]['price'];

答案 1 :(得分:0)

就个人而言,我会忘记功能化数据并只使用数组。多数民众赞成在那里。这也将使您将来将数据移植到数据库变得更加容易。

<?php 
$products = array(
    array('item_name'=>'lamp', 'item_price'=>19.99, 'item_category'=>'furniture', 'item_dollar'=>19, 'item_cents'=>99),
    array('item_name'=>'chair', 'item_price'=>19.99, 'item_category'=>'furniture', 'item_dollar'=>19, 'item_cents'=>99),
);
//
echo $products[0]['item_name'];
?>

答案 2 :(得分:0)

我会将您的项目存储为JSON对象,可以轻松地将其转换为本机php数组,并且还可以根据需要直接更新和添加项目。我不会在这里获得这些好处,但这些项目可以存储为:

{
  "1": {
    "name": "lamp",
    "price": "19.99",
    "category": "furniture"
  },
  "2": {
    "name": "chair",
    "price": "29.99",
    "category": "furniture"
  }
}

items.json这样的文件中,当需要与之交互时,将其转换为本机php:

$items_json = file_get_contents('items.json');
$items = json_decode($items_json, true);

然后正如Alex所示,您可以像这样与项目列表进行互动:

$id = 1;
echo "Name is: " . $items[$id]['name'];
echo "Price is: " . $items[$id]['price'];

答案 3 :(得分:-1)

要更改变量范围,请添加全局关键字并列出所有全局变量,请尝试:

function selectProduct($id) {
  global $item_name, $item_price, $item_category, $item_Dollar, $item_Cents;

但这不是好习惯。 imho,你应该将数据包装到对象中,并返回对象,即:

function selectProduct($id) {
  $item = new StdClass;
  //...
  switch($id) {
    case 1: $item->name = "name";
            //...
            break;
    //...
  }
  return $item;
}

答案 4 :(得分:-1)

<?php
$array_to_use = array();  
$array_to_use['item_name'] =  $item_name = "lamp";
 $array_to_use['item_price'] = $item_price = 29.99;
 $array_to_use['item_category'] = $item_category = "furniture";
 $array_to_use['item_Dollar'] = $item_Dollar = 29;
$array_to_use['item_Cents'] =  $item_Cents = 99;
?>

<?php
    function selectProduct($id) {
    global $array_to_use; 
   extract($array_to_use); 
     switch($id) {
          case 1:
              $item_name = "lamp";
              $item_price = 19.99;
              $item_category = "furniture";
              $item_Dollar = 19;
              $item_Cents = 99;
              break;

          case 2:
              // and so on...

          default: break;
     }
    }
?>

更新应该有效。