【问题标题】:PHP Assigning New Values to Array ElementsPHP 为数组元素分配新值
【发布时间】:2021-02-25 21:24:54
【问题描述】:

我在 HTML 中制作了以下表格:

<form method="post" action="survey.php">
   <div>
            <label class="prompt">Favorite CS courses:</label>
            <label>
                <input type="checkbox" name="courses[]" value="course-web">Web Development &nbsp;
            </label>
            <label>
                <input type="checkbox" name="courses[]" value="course-net">Networking &nbsp;
            </label>
            <label>
                <input type="checkbox" name="courses[]" value="course-gui">GUI &nbsp;
            </label>
            <label>
                <input type="checkbox" name="courses[]" value="course-oop">OOP
            </label>
   </div>

   <div>
            <input type="submit" value="Submit Survey">
   </div>
</form>

当用户提交表单时,它会提交给我拥有的 PHP 文件。在文件中,我有以下变量分配来接收来自 HTML 的courses[]

$courses = $_POST["courses"];

在我的 PHP 代码中,我有以下 foreach 循环,以便我可以打印出数组中的值:

// output the user's favorite courses
    echo "<p>Favorite Courses:</p> <ul>";
    foreach ($courses as $course)
    {
        echo "<li><strong>$course</strong></li>";
    }
    echo "</ul>";

问题是,当我输出课程时,结果是这样的:

Favorite Courses:

course-web
course-net
course-gui
course-oop

我想更改我的代码,使其输出如下:

Favorite Courses:

Web Development
Networking
GUI
OOP

我应该如何做到这一点更改任何 HTML 代码。

我为这个问题想出的最佳解决方案是下面的代码,但我觉得它可以改进很多:

// output the user's favorite courses
    echo "<p>Favorite Courses:</p> <ul>";
    foreach ($courses as $course)
    {   
        if ($course == 'course-web')
        {
            echo "<li><strong>Web Development</strong></li>";
        }
        if ($course == 'course-net')
        {
            echo "<li><strong>Networking</strong></li>";
        }
        if ($course == 'course-gui')
        {
            echo "<li><strong>GUI</strong></li>";
        }
        if ($course == 'course-oop')
        {
            echo "<li><strong>OOP</strong></li>";
        }
    }
    echo "</ul>";

【问题讨论】:

  • 选项文本不会传输到 PHP,只有 value 属性,所以除非您的 PHP 代码可以访问其他来源的文本,否则您无法做到这一点。

标签: php html arrays forms


【解决方案1】:

创建一个数组,将表单提交的值映射到人类可读的名称:

$names = [
    'course-web' => 'Web Development',
    'course-net' => 'Networking',
    'course-gui' => 'GUI',
    'course-oop' => 'OOP',
];

遍历接收到的值数组并在数组中查找人类可读的名称:

foreach ($courses as $course)
    if ( strlen( $name = $names[ $course ] ) ) { // Yes, assign
        echo "<li><strong>$name</strong></li>";
    }
}

【讨论】:

    猜你喜欢
    • 2011-08-19
    • 1970-01-01
    • 2014-03-21
    • 1970-01-01
    • 1970-01-01
    • 2015-09-29
    • 2011-08-02
    • 2017-03-09
    • 1970-01-01
    相关资源
    最近更新 更多