Как мне привести в порядок кратное число, если условие читабельности? - PullRequest
2 голосов
/ 02 августа 2011

Как мне привести в порядок кратное число, если условие читабельности?

Например,

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 , но, думаю, я ошибался!

Ответы [ 5 ]

2 голосов
/ 02 августа 2011

Вы можете использовать in_array:

if (!in_array($key, array('pg_id', 'pg_tag', 'pg_user'))
2 голосов
/ 02 августа 2011

Одним из возможных решений может быть размещение каждого условия в отдельной строке:

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

Я считаю, что это проясняет эти типы составных условий для меня.

0 голосов
/ 02 августа 2011

Рефакторинг в функцию с именем, которое описывает ее назначение:

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 = ?";
}
0 голосов
/ 02 августа 2011

Вы можете распространить это:

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;
}
0 голосов
/ 02 августа 2011

Итак, используйте переносы строк:

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

Делает его более читабельным.

A switch -условие предназначено для проверки только для одного условия. Например, если вы проверите номер.

$number = 12;
switch($number){
  case 1:
    // Do stuff...
  case [...]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...