Я пытаюсь создать систему фильтров в основном, которая получает данные от ввода в форме HTML, а затем использует эти данные в PHP для фильтрации существующих «профилей» из $profileArray
, выводя любые профили, включая введенные пользователем данные / переменные. Я не могу понять, как отправить входные данные пользователя через мои функции filter_array, которые, насколько я знаю, работают с его тестированием с помощью var_dump
.
Как новичок, я не могу понять объяснения $ foo и $ bar в php.net, поэтому явные объяснения очень ценятся.
<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); ?>
Я не понял, каков ваш вопрос, но я думаю, что вы не можете пройти через массив you'r. Этот цикл поможет вам чересчур перебрать многомерный массив. И в вашем массиве age isnt в строке, поэтому вам не нужно изменять значение ввода пользователя из строки в 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; } } } }