php - 基于 session 变量 php 运行 Correct Array 函数

标签 php arrays session if-statement

作为一个非常新手的 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/

相关文章:

php - 通过 PHP 清理 PostgreSQL 中所有用户的输入

php - Abaraham 的 twitteroauth 500 服务器错误

javascript - 计算对象数组中的重复项

将二维数组转换为单个数组

在虚拟主机上发布后 php session 无法正常工作

python - 如何测试使用 SQLAlchemy 的 Flask 应用程序?

在代理之外访问 Apache Tomcat 应用程序的 session 问题

php - CodeIgniter 将数据插入数据库并在字符串中添加引号

php - 如何使用 api 和 json 从一个网站访问另一个网站的数据

java - JAVA中单词末尾大写字母后如何反转单词?