在PHP中验证的更好,更简洁的模式?

时间:2013-05-29 18:53:28

标签: php

有没有更好的方法来编写这种设置变量的模式并在循环后检查它的值?

<?php

$isValid = false;
foreach ($posts as $post) {

    // If post ID matches the request ID
    if($post->id == $id) {

        $isValid = true;
        break;
    }
}

if(!$isValid) {

    // Not valid!
    header('Location: ...');
}

似乎有更好的方式来写这个。

2 个答案:

答案 0 :(得分:2)

if (!array_filter($posts, function ($post) use ($id) { return $post->id == $id; })) {
    header(...);
}

(可选择首先将长线条分配到变量中以使其更具可读性。)

如果你偏爱Functional PHP

if (F\none($posts, function ($post) use ($id) { return $post->id == $id; })) {
    header(...);
}

没有太大的区别,但读得更好。

答案 1 :(得分:-1)

你可以做这样的事情来缩短它,但这就是它......

<?php
foreach ($posts as $post) {
    // If post ID matches the request ID
    if($post->id != $id) {
        header("Location: ...");
        exit;
    }
}