如何整理多个 if 条件以提高可读性?

发布于 2024-11-27 07:47:26 字数 911 浏览 1 评论 0原文

如何整理多个 if 条件以提高可读性?

例如,

if( $key != 'pg_id' && $key != 'pg_tag' && $key != 'pg_user'  )

当处于这种情况的物品变长时,这会让我感到困惑。

它在下面的这种情况下使用 - foreach()

$editable_fields = array(
    'pg_id',
    'pg_url',
    'pg_title',
    'pg_subtitle',
    'pg_description',
    'pg_introduction',
    'pg_content_1',
    'pg_content_2',
    'pg_content_3',
    'pg_content_4',
    'pg_backdate',
    'pg_highlight',
    'pg_hide',
    'pg_cat_id',
    'ps_cat_id',
    'parent_id',
    'tmp_id',
    'usr_id'
);

$sql_pattern = array();

foreach( $editable_fields as $key )
{
    if( $key != 'pg_id' && $key != 'pg_tag' && $key != 'pg_user'  ) $sql_pattern[] = "$key = ?";
}

我正在考虑使用 switch 但我想我错了!

How can I tidy multiple if condition for readability?

For instance,

if( $key != 'pg_id' && $key != 'pg_tag' && $key != 'pg_user'  )

This confuses me when the items in that condition grow longer.

It was used in this kind of situation below - foreach(),

$editable_fields = array(
    'pg_id',
    'pg_url',
    'pg_title',
    'pg_subtitle',
    'pg_description',
    'pg_introduction',
    'pg_content_1',
    'pg_content_2',
    'pg_content_3',
    'pg_content_4',
    'pg_backdate',
    'pg_highlight',
    'pg_hide',
    'pg_cat_id',
    'ps_cat_id',
    'parent_id',
    'tmp_id',
    'usr_id'
);

$sql_pattern = array();

foreach( $editable_fields as $key )
{
    if( $key != 'pg_id' && $key != 'pg_tag' && $key != 'pg_user'  ) $sql_pattern[] = "$key = ?";
}

I was thinking using switch but I think I was wrong!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

生生漫 2024-12-04 07:47:26

您可以使用 in_array

if (!in_array($key, array('pg_id', 'pg_tag', 'pg_user'))

You could use in_array:

if (!in_array($key, array('pg_id', 'pg_tag', 'pg_user'))
赠我空喜 2024-12-04 07:47:26

一种可能的解决方案是将每个条件放在自己的行上:

foreach( $editable_fields as $key )
{
    if( $key != 'pg_id' && 
        $key != 'pg_tag' && 
        $key != 'pg_user'  )
    { 
        $sql_pattern[] = "$key = ?";
    }
}

我发现这为我澄清了这些类型的复合条件。

One possible solution could be to put each condition on it's own line:

foreach( $editable_fields as $key )
{
    if( $key != 'pg_id' && 
        $key != 'pg_tag' && 
        $key != 'pg_user'  )
    { 
        $sql_pattern[] = "$key = ?";
    }
}

I find this clarifies these types of compound conditions for me.

零時差 2024-12-04 07:47:26

因此,使用换行符:

if( $key != 'pg_id' &&
    $key != 'pg_tag' &&
    $key != 'pg_user'
 ){
    $sql_pattern[] = "$key = ?";
}

使其更具可读性。

switch 语句仅用于测试一种条件。就像您要检查号码一样。

$number = 12;
switch($number){
  case 1:
    // Do stuff...
  case [...]
}

So, use line-breaks:

if( $key != 'pg_id' &&
    $key != 'pg_tag' &&
    $key != 'pg_user'
 ){
    $sql_pattern[] = "$key = ?";
}

Makes it more readable.

A switch-statement is meant to test only for one condition. Like if you would check for a number.

$number = 12;
switch($number){
  case 1:
    // Do stuff...
  case [...]
}
謸气贵蔟 2024-12-04 07:47:26

您可以将其展开:

if(
    $key != 'pg_id' && 
    $key != 'pg_tag' && 
    $key != 'pg_user'
) {
    /* code here */
    $sql_pattern[] = "$key = ?"
}

...或使用 switch 语句

switch ($key) {
    default:
        /* code here */
        $sql_pattern[] = "$key = ?"
        break;
    case 'pg_id':
    case 'pg_tag':
    case 'pg_user':
        break;
}

You can either spread it out:

if(
    $key != 'pg_id' && 
    $key != 'pg_tag' && 
    $key != 'pg_user'
) {
    /* code here */
    $sql_pattern[] = "$key = ?"
}

... or use a switch statement

switch ($key) {
    default:
        /* code here */
        $sql_pattern[] = "$key = ?"
        break;
    case 'pg_id':
    case 'pg_tag':
    case 'pg_user':
        break;
}
嘿咻 2024-12-04 07:47:26

重构为具有描述其用途的名称的函数:

function KeyIsNotMatch($key) {
    if( $key != 'pg_id' && $key != 'pg_tag' && $key != 'pg_user'  )
        return true;
    else
        return false;
}

foreach( $editable_fields as $key )
{
    if (KeyIsNotMatch($key)) $sql_pattern[] = "$key = ?";
}

Refactor into a function with a name that describes its purpose:

function KeyIsNotMatch($key) {
    if( $key != 'pg_id' && $key != 'pg_tag' && $key != 'pg_user'  )
        return true;
    else
        return false;
}

foreach( $editable_fields as $key )
{
    if (KeyIsNotMatch($key)) $sql_pattern[] = "$key = ?";
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文