作为一个非常新手的 php 编码器和 Web 开发的初学者,我需要一些建议和帮助,我有一个 calculation.php 脚本,我正在将其包含到登录页面中。该脚本根据用户计算价格在表单过程中输入值。在不让事情变得复杂的情况下,因为我要尝试运行动态登录页面,脚本输出的计算价格可能会因我们提供的 2 种不同服务而不同,因此服务 1 比服务 2 便宜。
如果 session 变量等于特定值,我如何才能让数组函数运行,例如:
<?php
session_start();
if($_SESSION['service1'] == 'yes') {
这是 Calculation.php 脚本:
$data = array(
array(
'min' => "0",
'max' => "100,000",
'value' => 249
),
array(
'min' => "100,001",
'max' => "200,000",
'value' => 255
)
);
function getAdjustedPrice($price, &$table) {
$priceData = current(array_filter($table, function($value) use(&$price) {
return $value['min'] <= $price && $value['max'] >= $price;
}));
return $priceData['value'];
}
$input = intval($_SESSION["servicecost"]);
printf("",
$input,
getAdjustedPrice($input, $data));
如果 session 变量 1 未设置为是,而是设置为“否”,则运行计算的第二个变体,然后我将回显输出,因为变体编号 2 基本上是服务 2,价格更高。 .
<?php
session_start();
if($_SESSION['service1'] == 'no') {
$data = array(
array(
'min' => "0",
'max' => "100,000",
'value' => 450
),
array(
'min' => "100,001",
'max' => "200,000",
'value' => 600
)
);
function getAdjustedPrice($price, &$table) {
$priceData = current(array_filter($table, function($value) use(&$price) {
return $value['min'] <= $price && $value['max'] >= $price;
}));
return $priceData['value'];
}
$input = intval($_SESSION["servicecost"]);
printf("",
$input,
getAdjustedPrice($input, $data));
希望这是有道理的,我已经尝试自己使用 elseif 状态来完成它并像这样进行操作:if($_SESSION['service1'] == 'yes') { 然后运行下面的代码然后 } else { if($_SESSION['service1'] == 'no') { 但是我运气不好,而且总是犯愚蠢的错误。非常感谢任何建议或意见。谢谢。
最佳答案
如果我理解正确,下面应该做你想做的:
<?php
session_start();
$service = $_SESSION['service1'] == 'yes'
? 'service1'
: 'service2';
$data = array(
'service1'=>array(
array(
'min' => "0",
'max' => "100,000",
'value' => 249
),
array(
'min' => "100,001",
'max' => "200,000",
'value' => 255
)
),
'service2'=>array(
array(
'min' => "0",
'max' => "100,000",
'value' => 450
),
array(
'min' => "100,001",
'max' => "200,000",
'value' => 600
)
)
);
function getAdjustedPrice($price, &$table)
{
$priceData = current(array_filter($table, function($value) use(&$price) {
return $value['min'] <= $price && $value['max'] >= $price;
}));
return $priceData['value'];
}
$input = intval($_SESSION["servicecost"]);
printf(
"",
$input,
getAdjustedPrice($input, $data[ $service ])
);
祝你好运!
编辑:对于第三个服务,您需要将数据添加到数组并检查 session 中的正确值,您可以使用 switch 语句,诀窍是分配正确的服务,我想您需要在 session $_SESSION['service1'] 中存储不同的值。
所以你的代码现在看起来像这样:
<?php
session_start();
switch ($_SESSION['service1']) {
case 'yes':
$service = 'service1';
break;
case 'no':
$service = 'service2';
break;
case '???????':
$service = 'service3';
break;
}
$data = array(
'service1'=>array(
array(
'min' => "0",
'max' => "100,000",
'value' => 249
),
array(
'min' => "100,001",
'max' => "200,000",
'value' => 255
)
),
'service2'=>array(
array(
'min' => "0",
'max' => "100,000",
'value' => 450
),
array(
'min' => "100,001",
'max' => "200,000",
'value' => 600
)
),
'service3'=>array(
array(
'min' => "0",
'max' => "100,000",
'value' => 8888888888
),
array(
'min' => "100,001",
'max' => "200,000",
'value' => 9999999999
)
)
);
function getAdjustedPrice($price, &$table)
{
$priceData = current(array_filter($table, function($value) use(&$price) {
return $value['min'] <= $price && $value['max'] >= $price;
}));
return $priceData['value'];
}
$input = intval($_SESSION["servicecost"]);
printf(
"",
$input,
getAdjustedPrice($input, $data[ $service ])
);
关于php - 基于 session 变量 php 运行 Correct Array 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31736929/