php - 也许是一个简单的数组问题
问题描述
我这里有点问题。我已经检查了很多次错误,但我无法让它工作。所以我必须创建一个读取 3 行输入的程序。这是关于一家杂货店,在一周和周末有 2 个不同的价格值。我必须让它只输出水果的价格 * 数量,如果当天或水果不存在,则输出“错误”。我真的很困惑为什么我的代码不起作用。我才开始使用 PHP,所以也许我没有太多经验。
$type = strtolower(readline());
$day = strtolower(readline());
$quantity = floatval(readline());
$days = array("monday", "tuesday", "wednesday", "thursday", "friday");
$weekend = array("saturday", "sunday");
$fruit_normal = array(
"2.50" => "banana",
"1.20" => "apple",
"0.85" => "orange",
"1.45" => "grapefruit",
"2.70" => "kiwi",
"5.50" => "pineapple",
"3.85" => "grapes"
);
$fruit_we = array(
"2.70" => "banana",
"1.25" => "apple",
"0.90" => "orange",
"1.60" => "grapefruit",
"3.00" => "kiwi",
"5.60" => "pineapple",
"4.20" => "grapes"
);
$search = array_search($day, $days);
$search1 = array_search($day, $weekend);
$search2 = array_search($type, $fruit_normal);
$search3 = array_search($type, $fruit_we);
if ($search != NULL && $search2 != NULL) {
$price = $search2 * $quantity;
$formatted = number_format($price, 2);
print $formatted;
} elseif ($search1 != NULL && $search3 != NULL) {
$price = $search3 * $quantity;
$formatted = number_format($price, 2);
print $formatted;
} elseif ($search == NULL && $search1 == NULL && $search2 == NULL && $search3 == NULL) {
echo "error";
}
解决方案
这就是我首先解决问题的方法,我使所有由参数组成的数组仅从 1 开始。然后在检查结果时将所有NULL
值替换为我仍然不确定真正的问题是什么,但现在我'会接受就是这样。FALSE
array_search
$type = strtolower(readline());
$day = strtolower(readline());
$quantity = floatval(readline());
$days = array(1 => "monday", "tuesday", "wednesday", "thursday", "friday");
$weekend = array(1 =>"saturday", "sunday");
$fruit_normal = array(
"2.50" => "banana",
"1.20" => "apple",
"0.85" => "orange",
"1.45" => "grapefruit",
"2.70" => "kiwi",
"5.50" => "pineapple",
"3.85" => "grapes"
);
$fruit_we = array(
"2.70" => "banana",
"1.25" => "apple",
"0.90" => "orange",
"1.60" => "grapefruit",
"3.00" => "kiwi",
"5.60" => "pineapple",
"4.20" => "grapes"
);
$search = array_search($day, $weekend);
$search1 = array_search($type, $fruit_normal);
$search2 = array_search($type, $fruit_we);
$search3 = array_search($day, $days);
if($search1!= FALSE && $search3 != FALSE ){
$price = $search1 * $quantity;
echo number_format($price, 2);
}elseif($search != FALSE && $search2 != FALSE){
$price = $search2 * $quantity;
echo number_format($price, 2);
}elseif($search == FALSE && $search3 == FALSE){
echo "error";
}elseif($search1 == FALSE && $search2 == FALSE){
echo "error";
}
推荐阅读
- python-3.x - raise ValueError('无效的目标语言')
- java - 带有游标的从 hibernate3 到 hibernate5 的存储过程导致参数不匹配问题
- angular - 使用labelFormatter在legendSymbol之前的Highcharts甜甜圈自定义图例文本
- python - 尝试使用 python 解密 chrome 密码时 AES 密钥长度(356 字节)不正确
- python - 有没有办法用 Python 从特定区域截取屏幕截图?
- ui-automation - Inspect.exe 元素 controlType 行为在不同的 PC 上是不同的
- python-3.x - 编写在条件下返回一个元素的函数
- python - 错误:“浮动”对象在使用 .corr 时没有属性“形状”
- react-native - 反应本机中的抽屉导航问题
- awk - 如何使用 awk 或 sed 从 HTML 代码中获取所有属性名称和值