我正在尝试基本创建一个过滤系统,它从HTML表单中的输入中获取数据,然后在PHP中使用该数据从$profileArray
过滤现有的“配置文件”,输出包含用户输入数据的任何配置文件/变量(多个)。我无法弄清楚如何通过我的filter_array函数发送用户输入数据,据我所知,这些函数使用var_dump
进行测试。
作为初学者,我无法理解php.net中的$ foo和$ bar解释,所以非常感谢非常感谢。
<html>
<body>
<form action="profileFilter.php" method="POST">
<p>Age: <input type="text" name="ageChoice"></p>
<p>Colour: <input type="text" name="colourChoice"></p>
<input type="submit" name="catQualitiesBtn">
</form>
</body>
</html>
<?php
$profileArray = array(
array( 'Name' => "Toby",
'Age' => 3,
'Colour' => "Ginger",
),
array( 'Name' => "Cassie",
'Age' => 3,
'Colour' => "Tabby",
),
array( 'Name' => "Lucy",
'Age' => 1,
'Colour' => "Black",
)
);
function get_profile_by_age ($profile, $age){
return array_filter ($profile, function($ageInput) use ($age){
return $ageInput['Age'] === $age;
});
}
function get_profile_by_age ($profile, $colour){
return array_filter ($profile, function($colourInput) use ($colour){
return $colourInput['Colour'] === $colour;
});
}
$ageInput = intval($_POST['ageChoice']);
$colourInput = strval($_POST['colourChoice']);
echo function get_profile_by_age ($ageInput , $age);
echo function get_profile_by_colour ($colourInput , $colour);
?>
答案 0 :(得分:0)
我不明白你的问题是什么,但我认为你无法循环通过你的数组。这个循环将帮助你循环遍历多维数组。并且在您的数组中,年龄不是字符串,因此您不必将用户输入的值从字符串更改为int。
<html>
<body>
<form action="profileFilter.php" method="POST">
<p>Age: <input type="text" name="ageChoice"></p>
<p>Colour: <input type="text" name="colourChoice"></p>
<input type="submit" name="catQualitiesBtn">
</form>
</body>
</html>
<强> PHP 强>
<?php
$profileArray = array(
array( 'Name' => "Toby",
'Age' => 3,
'Colour' => "Ginger",
),
array( 'Name' => "Cassie",
'Age' => 3,
'Colour' => "Tabby",
),
array( 'Name' => "Lucy",
'Age' => 1,
'Colour' => "Black",
)
);
if (isset($_POST['ageChoice']) && isset($_POST['colourChoice'])) {
$ageInput = $_POST['ageChoice'];
$colourInput = $_POST['colourChoice'];
for ($i=0; $i >=0 ; $i++) {
if ($profileArray[i]['Age'] == $_POST['ageChoice'] && $profileArray[i]['Colour'] == $_POST['colourChoice']) {
echo "name -".$profileArray[i]['Name'];
break;
}
}
}
}