php - 从 PHP 中的选定选项返回多维数组键
问题描述
我在 PHP 中大致是新手,我试图在用户选择的选择选项列表内的表中显示多维数组的内容。我想要做的是将所选选项的数组键返回到一个新变量中,例如 $keyref = key($myarray);
这样我就可以使用该键在表内显示,但我不知道如何。我是否使用列表onChange=function()
中的javascript 函数<select>
?
这是代码:
<?php
$tshirt = array (
array("T-shirt A",15,"XS"),
array("T-shirt B",20,"S"),
array("T-shirt C",25,"M")
); //array("t-shirt type", price, "size")
$keyRef = 0; //the variable that will contain the selected array key
echo "<select id='shirtlist'>";
foreach($tshirt as $value){
echo "<option value='$value)'>$value[0]</option>";
}
echo "</select>";
echo "<p>Details of T-shirt:</p>";
echo "<table>";
echo "<tr>";
echo "<th>T-shirt Type</th>";
echo "<th>Price</th>";
echo "<th>Size</th>";
echo "</tr>";
echo "<tr>";
echo "<td>".$tshirt[$keyRef][0]."</td>";
echo "<td>".$tshirt[$keyRef][1]."</td>";
echo "<td>".$tshirt[$keyRef][2]."</td>";
echo "</tr>";
echo "</table>";
?>
该表设法显示第一个数组的数据,但是当我选择其他选项时没有任何反应。至于尝试javascript函数,我尝试了该json_encode($myarray)
方法,但只返回了数组作为字符串通知。
解决方案
首先,你要明白 PHP 只在服务器端执行,这意味着 PHP 代码和你在浏览器中实现的动作之间没有交互。
返回 PHP 的唯一方法是发送一个新请求。
根据您想要做什么以及您希望在浏览器中使用哪种工作流程,您应该在纯 PHP(每个操作都必须通过客户端-服务器请求实现)或使用 javascript(直接在浏览器中执行)之间进行选择。
在纯 PHP 中,您的功能可以通过以下代码实现:
<?php
$tshirt = array (
array("T-shirt A",15,"XS"),
array("T-shirt B",20,"S"),
array("T-shirt C",25,"M")
); //array("t-shirt type", price, "size")
$keyRef = 0; //the variable that will contain the selected array key
if(isset($_GET["shortlist"]) && isset($tshirt[$_GET["shirtlist"]])) {
$keyRef = $_GET["shirtlist"];
}
echo "<form method='GET'>";
echo "<select name='shirtlist'>";
foreach($tshirt as $key => $value){
$selected = '';
if ($key == $keyRef) {
$selected = 'selected';
}
echo "<option value='$key' $selected>".$value[0]."</option>";
}
echo "</select>";
echo "<input type='submit' value='submit'/>";
echo "</form>";
echo "<p>Details of T-shirt:</p>";
echo "<table>";
echo "<tr>";
echo "<th>T-shirt Type</th>";
echo "<th>Price</th>";
echo "<th>Size</th>";
echo "</tr>";
echo "<tr>";
echo "<td>".$tshirt[$keyRef][0]."</td>";
echo "<td>".$tshirt[$keyRef][1]."</td>";
echo "<td>".$tshirt[$keyRef][2]."</td>";
echo "</tr>";
echo "</table>";
?>
请注意,我使用全局 $_GET 从 URL 查询字符串中获取信息。当点击表单的提交按钮时,该信息被传递给 PHP,然后使用name
标签的属性可以在其中访问 select<select name="shirtlist">
的值(意味着$_GET["shirtlist"]
当表单的方法是时可以访问该值GET
)。
此代码需要用户执行操作以使用选择更新页面。
我还添加了一个selected
属性,select
以便选择显示的文章(当迭代索引与请求的shirtlist
值相同时)。
在这里仔细检查 if(isset($_GET["shortlist"]) && isset($tshirt[$_GET["shirtlist"]])) {
以确保所选项目在列表中,因为任何人都可以访问 URL,因此可以手动更改值,将表单方法更改为POST
然后使用$_POST
全局数组访问值更安全的$_GET
一个。
推荐阅读
- c# - C# UWP TCP 客户端
- node.js - 使用电子获取用户主目录
- postgresql - 用户“ebroot”弹性beantalk的密码认证失败
- python - 从命令中检索参数并将其与列表中的项目匹配
- discord.js - 有没有办法改变参数的顺序?
- python - Pybluez 找不到设备,但 bluetoothctl 可以
- git - 如何在另一个 GitHub 存储库中动态导入 GitHub 存储库?
- javascript - Vue 组件的 prop 未定义(致命错误)
- javascript - ReferenceError:函数未定义,从异步函数调用常规函数
- database - 考虑新 Web 应用程序的数据库选项