【问题标题】:Assigning variables based on string data根据字符串数据分配变量
【发布时间】:2018-05-15 23:37:41
【问题描述】:

我有一个低效构造的表单,显然每个 SELECT 元素发送一种类型的数据。为简单起见,这里举个例子。

表单从 2 个 SELECT 元素发布数据,但它实际上需要包含 3 条数据。对用户而言,SELECTs do 包含 3 条数据;一个 SELECT 表示数量,另一个 SELECT 表示项目名称和价格,使用 OPTION 标签之间的文本。

所以,表单只发送 $quantity 和 $itemname

在处理过程中,我正在尝试构建一组 IF 或一个 SWITCH 来提供缺失的价格。由于与 $itemname 关联的字符串是唯一的,因此我正在尝试制作一个提供价格的“密钥”。我的逻辑是,如果 $itemname 包含“One Inch Nut”,我可以通过以下方式找到 $price:

if ($itemname = "Once Inch Nut;") { $price = .25; }

如果 $itemname 是别的东西,我会在 switch 中添加另一个 IF 或 IF else 或 CASE。

事实上,我就是这样做的,但是当我从 SELECT 中选择另一个 OPTION 时,$price 甚至 $item 名称都被定义为我的“IF”堆栈中的最后一个“IF”

因此,如果我要选择 20 项 SELECT 分组中的第 3 项,那么当我需要使用变量(添加、回显等)时,我最终会以“IF堆栈”

很明显,我对IE ELSEIF ELSE的逻辑和理解是有缺陷的。

关于如何从变量的字符串数据中生成这个“键”的想法?

谢谢, 抢

以下是我认为会起作用的简略示例:

假设表单为 $itemname 发布“cat”,为 $qty 发布“3”

<? 
$itemname =  $_POST['specificitem'] ;
$qty =  $_POST['quantity'] ;

if ($itemname = "cat;") { $price = 2.25; }
if ($itemname = "dog;") { $price = 1.25; }
if ($itemname = "hamster;") { $price = 3.25; }
if ($itemname = "parakeet;") { $price = 7.25; }
if ($itemname = "werewolf;") { $price = 122.25; }

echo $itemname; 
echo "$"$price;

?>

应该收益:cat $2.25 ????

【问题讨论】:

  • sting data 是什么样的数据?像“Roxanne”之类的?

标签: php variables string


【解决方案1】:

您需要== 进行测试:

if ($itemname == "cat;") { $price = 2.25; }

但是,switch 用于这种情况是很常见的:

$itemname =  $_POST['specificitem'] ;
$qty =  $_POST['quantity'] ;

switch($itemname)
{
  case "cat;":
    $price = 2.25;
    break;
  case "dog;":
    $price = 1.25;
    break;
  case "hamster;":
    $price = 3.25;
    break;
  case "parakeet;":
    $price = 7.25;
    break;
  case "werewolf;":
    $price = 122.25;
    break;
}

echo $itemname;
echo "$"$price;

【讨论】:

    【解决方案2】:

    我建议您对此代码使用“表格”方法。创建一个按项目名称表示价格的数组。并在单行中获取价格,如下所示:

    <? 
    $itemname =  $_POST['specificitem'] ;
    $qty =  $_POST['quantity'] ;
    
    ## creating a price "table"
    $item_prices = array(
        'cat;' => 2.25,
        'dog;' => 1.25,
        ## adding more is easy here
    );
    if (array_key_exists($itemname, $item_prices)) {
        ## get price in single line
        $price = $item_prices[$itemname];
    }
    else {
        ## set some default price if item is unknown
    }
    
    echo $itemname; 
    echo "$",$price;
    
    ?>
    

    稍后您可以根据需要使用$item_prices 为您的select 标签生成选项。

    【讨论】:

      猜你喜欢
      • 2018-11-20
      • 1970-01-01
      • 1970-01-01
      • 2021-11-28
      • 2016-08-25
      • 1970-01-01
      • 1970-01-01
      • 2011-09-27
      • 1970-01-01
      相关资源
      最近更新 更多