如果关联值不在数组中,PHP如何回显某些结果?

时间:2016-07-03 15:58:49

标签: php arrays

$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就已经在用户尝试输入数字之前尝试回复。

4 个答案:

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

这将完成工作。 :)