我正在实施一个包含少量产品的小型在线购物页面。
<?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不太熟悉,可能从代码中看出来很明显。我做错了什么?
答案 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;
}
}
?>
更新应该有效。