Как конвертировать `if condition` в` switch` метод

Как я могу написать это if condition в методе switch ?

 if( $k != 'pg_id' && $k != 'pg_tag' && $k != 'pg_user' ) { $result = $connection->run_query($sql,array(...)); } 

чтобы …?

 switch($k) { case 'pg_id': false; case 'pg_tag': false; case 'pg_user': false; default: $result = $connection->run_query($sql,array(...)); } 

РЕДАКТИРОВАТЬ:

Извините, я думаю, что я не разъяснял раньше, ниже, как я хочу его использовать,

 $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 = ?"; } 

как вы видите, я повторил условие там –

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

и в какой-то момент он может вырасти долго.

(Заимствование из предыдущего вопроса, который, по моему мнению, породил этот : короткая строка для обновления строки таблицы в базе данных? )

 $editable_fields = array( 'pg_url' , 'pg_title' , ... ); /* These are the fields we will use the values of to match the tuple in the db */ $where_fields = array( 'pg_id' , 'pg_tag' , 'pg_user' , ... ); $form_values = array(); $sql_pattern = array(); foreach( $editable_fields as $k ){ if( $k != 'pg_id' && isset( $_POST[$k] ) ){ $form_values[$k] = $_POST[$k]; // NOTE: You could use a variant on your above code here, like so // $form_values[$k] = set_variable( $_POST , $k ); $sql_pattern[] = "$k = ?"; } } $where_values = array(); $where_pattern = array(); foreach( $where_fields as $k ){ if( isset( $_POST[$k] ) ){ $where_values[$k] = $_POST[$k]; // NOTE: You could use a variant on your above code here, like so // $form_values[$k] = set_variable( $_POST , $k ); $where_pattern[] = "$k = ?"; } } $sql_pattern = 'UPDATE root_pages SET '.implode( ' , ' , $sql_pattern ).' WHERE '.implode( ' , ' , $where_pattern ); # use the instantiated db connection object from the init.php, to process the query $result = $connection->run_query($sql_pattern,array_merge( $form_values , $where_values )); 

Используйте break чтобы предотвратить переход к следующему случаю:

 switch($k) { case 'pg_id': case 'pg_tag': case 'pg_user': // any match triggers this block; break causes no-op break; default: $result = $connection->run_query($sql,array(...)); } 

Я не уверен, почему вы хотите использовать оператор switch для этого.

Если это доступно для чтения, вы можете попробовать это вместо этого:

 if($k != 'pg_id' && $k != 'pg_tag' && $k != 'pg_user') { $result = $connection->run_query($sql,array(...)); } 

Условие переключения, вероятно, будет быстрее (таблица перехода) и немного легче читать. Вы можете пропустить перерыв; если результат условия тот же, а улучшенный синтаксис – использовать фигурные скобки внутри каждого условия:

 switch ($k) { case 'pg_id': case 'pg_tag': case 'pg_user': { break; } default: { $result = $connection->run_query($sql,array(...)); } }