변수가 여러 문자열 값과 같지 않은지 확인하는 더 간단한 방법은?
현재 코드:
<?php
// See the AND operator; How do I simplify/shorten this line?
if( $some_variable !== 'uk' && $some_variable !== 'in' ) {
// Do something
}
?>
그리고:
<?php
// See the OR operator; How do I simplify/shorten this line?
if( $some_variable !== 'uk' || $some_variable !== 'in' ) {
// Do something else
}
?>
두 조건을 더 간단하게 쓸 수 있는 방법이 있습니까?
참고: 네, 서로 다르며 코드를 단축할 수 있는 다양한 방법이 있을 것으로 예상됩니다.
첫 번째 코드의 경우 @ShankarDamodaran에서 제공하는 답변을 다음과 같이 간단히 변경할 수 있습니다.
if ( !in_array($some_variable, array('uk','in'), true ) ) {
더 짧게, 더 짧게, 더 짧게.[]@Forty가 코멘트에서 지적한 것처럼 php 5.4 이후부터 사용 가능한 표기법
if ( !in_array($some_variable, ['uk','in'], true ) ) {
는 다음과 같습니다.
if ( $some_variable !== 'uk' && $some_variable !== 'in' ) {
... 더 짧습니다.특히 'uk'과 'in'을 비교하는 것 이상의 의미를 가진다면 더욱 그렇습니다.추가 변수(Shankar used $os)를 사용하지 않고 if 문에 배열을 정의합니다.어떤 사람들은 더럽다고 생각할 수도 있고, 나는 그것이 빠르고 깔끔하다고 생각합니다:D
두 번째 코드의 문제는 다음과 같은 이유로 TRUE와 쉽게 교환할 수 있다는 것입니다.
if (true) {
대등한
if ( $some_variable !== 'uk' || $some_variable !== 'in' ) {
문자열의 값이 A 또는 Not B가 아닌지 묻는 것입니다.A이면 B도 아니고 B면 A도 아닙니다.그리고 C이거나 말 그대로 다른 것이라면 역시 A도 아니고 B도 아닙니다.그래서 그 진술은 항상 사실로 돌아옵니다(여기서 슈뢰딩거 법칙을 고려하지 않음).
PHP에서 활용할 수 있습니다.
$os = array("uk", "us"); // You can set multiple check conditions here
if (in_array("uk", $os)) //Founds a match !
{
echo "Got you";
}
나는 Habchi가 댓글로 사용한 코드를 좋아합니다.
if(!($some_variable === 'uk' || $another_variable === 'in')){//do}
특히 이 테스트가 여러 번 이루어지고 있고 PHP 7+를 실행하고 있고 설치한 경우에는 말이 될 수 있는 대안입니다.Set클래스는:
use Ds\Set;
$strings = new Set(['uk', 'in']);
if (!$strings->contains($some_variable)) {
또는 PHP의 모든 버전에서는 연관 배열을 사용하여 집합을 시뮬레이션할 수 있습니다.
$strings = ['uk' => 1, 'in' => 1];
if (!isset($strings[$some_variable])) {
세트를 생성할 때 추가 오버헤드가 발생하지만 각 테스트는 O(1) 연산이 됩니다.물론 비교되는 문자열 목록이 길수록 절감 효과가 커집니다.
if 문에 함수를 구축할 예정이라면 in_array를 사용하는 것도 권장합니다.훨씬 깨끗합니다.
변수에 값을 할당하려는 경우 if/else 축약어를 사용할 수 있습니다.
$variable_to_fill = $some_variable !== 'uk' ? false : true;
다중값 확인이 필요합니다.다음 코드를 사용해 보십시오.
<?php
$illstack=array(...............);
$val=array('uk','bn','in');
if(count(array_intersect($illstack,$val))===count($val)){ // all of $val is in $illstack}
?>
논리를 뒤집고 if가 비어 있는 다른 문장을 사용하는 것이 더 읽기 쉽다는 것을 알 수 있습니다.
if($some_variable === 'uk' || $another_variable === 'in'){}
else {
// This occurs when neither of the above are true
}
어떤 기본적인 리젝스가 잘 해줄 겁니다$some_variable !== 'uk' && $some_variable !== 'in':
if(!preg_match('/^uk|in$/', $some_variable)) {
// Do something
}
언급URL : https://stackoverflow.com/questions/19949923/simpler-way-to-check-if-variable-is-not-equal-to-multiple-string-values
'programing' 카테고리의 다른 글
| CSS 스타일시트는 어떤 순서로 재정의됩니까? (0) | 2023.10.11 |
|---|---|
| 동일한 mariaDB는 PHP 7.4에 FAT FREE가 적용된 PHP 7.1보다 훨씬 느리게 삽입됨 (0) | 2023.10.11 |
| AV 오디오 녹음기에서 오류가 발생함 (0) | 2023.10.11 |
| 이상한 Oracle XMLType.getClobVal() 결과가 발생했습니다. (0) | 2023.10.11 |
| #정의 블록을 클랜 형식으로 정렬할 수 있습니까? (0) | 2023.10.11 |