如何在完成php页面之前确保满足每个条件?

时间:2014-09-10 00:37:06

标签: php

所以说我有php:

if(a === x)
{
    echo "a";
}

if(b === y)
{
    echo "b";
}

if(c === z)
{
    echo "c";
}

如果 a = x且 b = y但 c = z。有没有办法阻止 b 被“回应”?

,如果 a = x但 b = y且 c = z 。有没有办法阻止 c 被“回应”?


我知道如果 = x,那么您不希望 b c 然后你应该这样做:

if(a === x)
{
    echo "a";
}else
{
    die();
}

if(b === y)
{
    echo "b";
}

if(c === z)
{
    echo "c";
}

但我想确保如果其中一个( a,b,c )不等于相应的3(x,y,z),则不会回显任何内容。


我也不能使用:

if (a == x && b == y && c == z) {
    echo "success";
}

因为每个假设条件都很大(即数据库插入并检查网址是否正常工作等)

以检查网址是否正常的示例为例:

$file_headers = @get_headers("https://www.google.co.uk/");
if($file_headers[0] == 'HTTP/1.1 404 Not Found') {

}
else {
    echo "Success concerning url";
}

以及插入数据库的示例:

if($result)
{
    echo "Success concerning inserting information to the database";
}

有没有办法如何做到这一点?

3 个答案:

答案 0 :(得分:1)

这是什么背景?无论如何,只要将它们放在一起:

if($a === 'x' && $b === 'y' && $c === 'z') {
    // satisfied all three conditions, then proceed
} else {
    // if one of them fails, stop the process
}

答案 1 :(得分:1)

Introducing boolean operators: &&)和||)。

if(a === x && b === y && c === y) {
    echo "a";
    echo "b";
    echo "c";
} else {
    die();
}

同样,如果任何条件为真,你可以终止脚本。

if(a !== x || b !== y || c !== z) {
    die();
}

echo "a";
echo "b";
echo "c";

如果您有许多布尔值(a === x)使您的条件超长并且难以阅读,您可以随时将布尔值设置为变量:

$boolA = a === x;
$boolB = b === y;
$boolC = c === y;
$boolZ = z < 0 || z >= 100 || z === (a + b + c);

if(!$boolA || !$boolB || !$boolC || !$boolZ) {
    die();
}

// success

您还可以创建一个或多个函数来清理代码:

function isValid() {
    // perform lots of logic
    return true;
}

if(!isValid()) die();

// success

在一天结束时......代码越复杂,您使用OOP的次数就越多。有很多PHP frameworks可以帮助初学者以这种心态开始。

由于我最近一直在使用Laravel,我将以它们为例。首先,您有一个路由文件,它将所有请求发送到您的站点,并将它们分发到某些类和&amp;方法

// Create a filter for checking if a URL is working
Route::filter('urlCheck', function()
{
    $file_headers = @get_headers("https://www.google.co.uk/");
    if($file_headers[0] == 'HTTP/1.1 404 Not Found') {
        // return a 404 page
    }

    // continue with the normal response
});

// Create a route for a basic request to http://example.com/test
Route::get('test', array('before' => 'urlCheck', function() {
    // create page for successful request to GET /test
}));

答案 2 :(得分:1)

  

但我想确保如果3(a,b,c)中的一个不等于相应的3(x,y,z),则不会回显任何内容。

由此实现:

if (a == x && b == y && c == z) {
    echo "all match";
}