0

我不断收到此错误:

致命错误:第 34 行不支持的操作数类型

而且我不知道如何解决它,我正在努力让输入到表格中的数字(例如 10)成为折扣,它会与折扣价相呼应,谁能帮我解决这个问题,这是代码

<!DOCTYPE html>
<html>
<head>
<title> Car Shop Cars! </title>
<link rel="stylesheet" type="css/text" href="style.css" 
</head>

<body>

<div id="header"> 
</div>

<div id="carpic">
</div>

<div id="price">
<center> This is the Nissan 350z and costs 8,999,999 <br>
please enter your promo code </center>
</div>

<div id="form">
<form action="index.php" method="post">

   <center> <input type="text" name="percent" id="percent" />
  <input type="submit"  /> </center>

</form> 
<?php
        $percent=$_POST['percent'];
    $total=['8,999,999'];

    /*calculation for discounted price */ 

    $discount_value= ($total / 100) *$percent;

    $final_price = $total - $discount_value;

    echo $final_price;

?> 
</div>

</body> 
</html>
4

5 回答 5

4

这是无效的

$total=['8,999,999'];

我猜你的意思是这样的

$total = 8999999;
于 2013-08-20T15:35:48.360 回答
1

看看你的代码:

$discount_value = ($total / 100) * $percent;
                          ^
                          |

所以在这里更具体地说:

$total / 100
       ^
       |

如果你把你的价值放在那里,$total你之前已经设置了线条;

$total = ['8,999,999'];

它将创建此操作:

['8,999,999'] / 100

这意味着您要将数组除以 100。PHP 不支持将数组除以整数,因此会出现错误。因此,当您尝试将数组除以整数时,我必须实话告诉您,这在 PHP 中是不可能的。

所有运算符 PHP 对数组的支持都在这个网站上:

另一方面,如果您担心首先将数组中的值转换为整数,那么您需要在操作中添加一个转换函数:

$converter($total) / 100  # 89999.99

$converter解析数组的函数在哪里:

$total = ['8,999,999'];

$converter = function (array $input) {
    $string = reset($input);
    $formatter = new NumberFormatter('en_GB', NumberFormatter::DECIMAL);
    return $formatter->parse($string, NumberFormatter::TYPE_INT32);
};

var_dump($converter($total) / 100); # double(89999.99)

希望这可以帮助。

于 2013-08-20T15:42:49.377 回答
0

你为什么用这个:$total=['8,999,999']; ? 这是一个错误

以这种方式使用它: $total= 8999999;

折扣的解决方案是: 只是一个例子:

   <?php
        $percent = 10;
        $total   = 1000;

        $discount_value= ($total / 100) *$percent;

        echo  $final_price = $total - $discount_value;
   ?>
于 2013-08-20T15:38:28.310 回答
0

以上所有都是正确的,但也试试这个:

if (isset($_POST['percent'])) {
    $percent=$_POST['percent'];
    $total='8999999';

    /*calculation for discounted price */ 

    $discount_value= ($total / 100) *$percent;

    $final_price = $total - $discount_value;

    echo $final_price;
}

不仅 $total 错误,而且您应该在进行计算之前验证表格是否已提交。

于 2013-08-20T15:42:51.437 回答
0

注意:此版本仅是检查数值的建议。

如果在表单字段中输入了一个数值,它将在之后显示新的价格。

但是,如果该字段包含除数字以外的任何内容,它将恢复为原始价格。

我还注意到您<link rel="stylesheet" type="css/text" href="style.css"在原始代码中的内容不完整。

它应该读作<link rel="stylesheet" type="css/text" href="style.css">您遗漏了结尾的“大于符号”=>>

添加了以下代码:

if (is_numeric ($_POST['percent'])) 
 {

 echo "<center>";
 echo "Your new price is: $" . $final_price;
 echo "</center>";
 } else {
 echo "<center>";
 echo "Please enter your promo code. <br>The current price is: $" . $final_price;
 echo "</center>";
 }

请随意使用它。(我为汽车的价格使用了一个更现实的数字)。

<!DOCTYPE html>
<html>
<head>
<title> Car Shop Cars! </title>
<link rel="stylesheet" type="css/text" href="style.css" />
</head>

<body>

<div id="header"> 
</div>

<div id="carpic">
</div>

<div id="price">
<center> This is the Nissan 350z and costs $35,000.00<br>
</center>
</div>

<div id="form">
<form action="index.php" method="post">

<center> <input type="text" name="percent" id="percent" />
<input type="submit"  /> </center>

</form> 
<?php

$percent=$_POST['percent'];
$total = 35000;

    /*calculation for discounted price */ 

    $discount_value= ($total / 100) *$percent;

    // I added this below
    $final_price = $total - $discount_value;

    $final_price = number_format($final_price);

    number_format($final_price, 2, '.', '');


if (is_numeric ($_POST['percent'])) 
 {

 echo "<center>";
 echo "Your new price is: $" . $final_price;
 echo "</center>";
 } else {
 echo "<center>";
 echo "Please enter your promo code. <br>The current price is: $" . $final_price;
 echo "</center>";
 }

?> 
</div>

</body> 
</html>
于 2013-08-20T16:59:38.897 回答