如何在PHP表单中从下拉列表中选择多维关联数组中的值的结果



下面是一个多维关联数组。

<?php
$schoolDetails = array(
//First School Details
array(
array("schoolName" => "TCS"),

array(
"branchName"       => "Iqbal Campus",
"phone"            => "052-4667281",
"numberofTeachers" => 51
),
array(
"departmentNameOne" => "Maths",
"HODOne"            => "Mr Ali",
"departmentNameTwo" => "Science",
"HODTwo"            => "Mr Imran"
),
),
array(
array("schoolName" => "CSS"),
array(
"branchName"       => "Gohdpur Campus",
"phone"            => "052-4667281",
"numberofTeachers" => 20
),
array(
"departmentNameOne" => "Chemistry",
"HODOne"            => "Mr Abdullah",
"departmentNameTwo" => "Computer",
"HODTwo"            => "Mr Naeem"
),
// array(
//  "departmentName" => "Computer",
//  "HOD"            => "Mr Naeem"
// )

),
array(
array("schoolName" => "APS"),

array(
"branchName"       => "Cantt Campus",
"phone"            => "052-4117281",
"numberofTeachers" => 55
),
array(
"departmentNameOne" => "Maths",
"HODOne"            => "Mr Imran",
"departmentNameTwo" => "English",
"HODTwo"            => "Mr Sami"
),
),
array(
array("schoolName" => "BCS"),
array(
"branchName"       => "Saidpur Campus",
"phone"            => "052-4656211",
"numberofTeachers" => 20
),
array(
"departmentNameOne" => "Physics",
"HODOne"            => "Mr Kareem",
"departmentNameTwo" => "Biology",
"HODTwo"            => "Mr Inam"
),
// array(
//  "departmentName" => "Computer",
//  "HOD"            => "Mr Naeem"
// )

),
);
?>

我制作了以下下拉表格:

<form class="col-md-3" method="post">
<select class="form-control" name="department_name">
<option selected="selected" multiple>Select a Department</option>
<option value="maths">Maths</option>
<option value="physics">Physics</option>
<option value="english">English</option>
<option value="chemistry">Chemistry</option>
<option value="computer">Computer</option>
<option value="biology">Biology</option>


</select><br>
<button type="submit" class="btn btn-success" name="department" value="Submit">Submit</button>
</form>

检查部门并获取结果的代码是:

if (isset($_POST['department'])) {
if ($_POST['department_name'] == 'maths') {

for ($outerMost = 0; $outerMost < 1; $outerMost++) {

for ($rowNum = 0; $rowNum < 3; $rowNum++) {

foreach ($schoolDetails[$outerMost][$rowNum] as $key => $value) {

echo "<td>$value</td>";

}
}
}


}

}

但每当我从下拉列表中选择值时,所有数组的值都会出现。我不知道如何只显示特定搜索值的结果。因此,我想要一个关于我是否正确地做了这样的事情以及如何从下拉中获取仅选定选项的值的指导

首先,让我们寻址您的数组。使用类似的东西可以轻松寻址和查找数据

$schoolDetails = [
[
"schoolName"       => "TCS",
"branchName"       => "Iqbal Campus",
"phone"            => "052-4667281",
"numberofTeachers" => 51,
"departments"      => [
[
"name" => "Maths",
"HOD"  => "Mr Ali"
],
[
"name" => "Science",
"HOD"  => "Mr Imran"
]
]
],
[
"schoolName"       => "CSS",
// etc 
]
];

现在,假设你的表格是某种搜索表格,你想按部门搜索,你可以使用PHP的array_filter()返回所有与所选值匹配的学校详细信息

if (!empty($_POST["department_name"])) {
$searchResults = array_filter($schoolDetails, function($school) {
$departmentNames = array_map(function($dep) {
return $dep["name"];
}, $school["departments"]);
return in_array($_POST["department_name"], $departmentNames);
});
foreach ($searchResults as $school) {
// just an example output
echo "School: ", $school["name"], "<br>";
echo "Branch: ", $school["branchName"];
// etc
}
}

最新更新