PHP:从HTML表单输入中获取数据,然后使用filter_array输出

时间:2016-05-22 03:59:30

标签: php html filter

我正在尝试基本创建一个过滤系统,它从HTML表单中的输入中获取数据,然后在PHP中使用该数据从$profileArray过滤现有的“配置文件”,输出包含用户输入数据的任何配置文件/变量(多个)。我无法弄清楚如何通过我的filter_array函数发送用户输入数据,据我所知,这些函数使用var_dump进行测试。

作为初学者,我无法理解php.net中的$ foo和$ bar解释,所以非常感谢非常感谢。

HTML

<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",
        )
        );

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);
?>

1 个答案:

答案 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;
        }
    }
 }
}