$array = [
"123" => ["name" => "Tom", "age" => "15"],
"456" => ["name" => "Dick", "age" => "16"],
"789" => ["name" => "Harry", "age" => "17"]
];
我有一个HTML表单,要求您输入一个3位数字,并通过$ _POST存储为$ number,如果它存在于数组中,它将回显数组中的数字,如果它不存在它会回显失败。我可以设法回显数组中的现有数字,但不能失败,我该怎么做呢?我使用foreach循环并在foreach循环中使用if语句。
<?php
foreach($array as $key => $value){
if($number == $key){
echo $key;
}
}
?>
有了这个,如果我输入123,456或789,它会相应地回响。但是现在我希望它在数组中输入不存在的内容时回显失败,比如999。 是的我知道我只需输入
即可else{
echo"Fail";
}
但由于某种原因,输出将是FailFailFail,我认为这是由于foreach循环。任何的想法?更不用说,仅仅通过简单地添加else语句,FailFailFail就已经在用户尝试输入数字之前尝试回复。
答案 0 :(得分:2)
您根本不需要使用foreach()
进行迭代 - 您可以像这样替换整个块,只需检查相应的密钥是否存在:
if (isset($array[$number])) {
echo 'success';
} else {
echo 'fail';
}
答案 1 :(得分:0)
只需添加&#34;否则&#34;声明
else {
echo "Failed";
}
答案 2 :(得分:0)
它写FailFailFail
因为你循环整个数组并测试所有键 - 这是不必要的。试试这个:
$number = $_POST['number']; // or wherefrom you take the value from form
$array = [
"123" => ["name" => "Tom", "age" => "15"],
"456" => ["name" => "Dick", "age" => "16"],
"789" => ["name" => "Harry", "age" => "17"]
];
if (isset($array[$number])) {
echo $number;
// or var_dump($array[$number]);
} else {
echo 'fail';
}
答案 3 :(得分:-2)
只需添加标记
<?php
$flag = 0;
foreach($array as $key => $value)
{
if($number == $key)
{
echo $key;
$flag = 1;
}
}
if($flag == 0)
{
echo "fail";
}
?>
这将完成工作。 :)