$array = [
"123" => ["name" => "Tom", "age" => "15"],
"456" => ["name" => "Dick", "age" => "16"],
"789" => ["name" => "Harry", "age" => "17"]
];
我有一个HTML表单,要求您输入一个3位数的数字,它存储为$number通过$_POST,如果它存在于数组中,它会回显出的数字是在数组中,如果它不存在,它会回显失败。我可以设法回显数组中现有的数字,但不失败,我怎么去做这个?我使用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就已经回显出来了。
您根本不需要迭代foreach()
—您可以像这样替换整个块,只需检查相应的键是否存在:
if (isset($array[$number])) {
echo 'success';
} else {
echo 'fail';
}
只需添加一个"else"语句
else {
echo "Failed";
}
它写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';
}
添加一个Flag
<?php
$flag = 0;
foreach($array as $key => $value)
{
if($number == $key)
{
echo $key;
$flag = 1;
}
}
if($flag == 0)
{
echo "fail";
}
?>
这就行了。:)