[php ÄÚµù] ÄÚµù µµ»ç´ÔÀº ÀÌ·± °æ¿ì ¾î¶»°Ô ÄÚµùÇϽóª¿ä?

   Á¶È¸ 3263   Ãßõ 0    

[php 코딩] 코딩 도사님은 이런 경우 어떻게 코딩하시나요?

일단 두 가지 예를 들어보겠습니다.

그 중에 어느 것이 바람직한 것인가요?

아니면 더 좋은 코딩 방법이 있다면 알려주시길 바랍니다.


코딩 조건문은 긍정문으로 하라고 하는데...

이런 경우는 다른 방법이 생각나지 않아  두 가지 방법만 알고 있습니다.


// 변수

$cname="홍길동마실";

$name1="갑순이";

$name2="에릭갑돌이";

$name3="홍길동마실||23.323.22";



// 코딩 1)

    if($cname == $name1) echo "";

elseif($cname == $name2) echo "";

elseif(preg_match("/^$cname/", $name3))  echo "";

else echo "잘못된 회원정보1 입니다.";


//코딩 2

if($cname != $name1) {

    if($cname != $name2) {

        if(!preg_match("/^$cname/", $name3)) {

            echo "잘못된 회원정보2 입니다.";

        }            

    }        

}

예전에 나를 도와준 마틴님이란 분이 있어 그분을 기억합니다.
2cpu의 도움주신 많은 분들께 늘 감사드립니다.
☎ HP 010-9678-7900
ªÀº±Û Àϼö·Ï ½ÅÁßÇÏ°Ô.
½º¹Ì 2019-09
Case¹®À» ¾²¼À¿ä ¿ª¾î¼­ ¾²´Â°Ç º°·ç ¾Æ´Ô Æã¼ÇÀ¸·Î ¸®ÅÏ
     
¾Æ~ ±×·¸±º¿ä
case À¸·Î Çؼ­
¸ÂÀ¸¸é break; ó¸®...
ÃÖÁ¾ÀûÀ¸·Î  else µÇ¸é ¿¡·¯Ã³¸®...¤¾¤¾
     
switch($cname){
        case $name1: break;
        case $name2: break;
case ($cname==$name3 || preg_match("/$cname\|+/", $name3) ? true : false): break;
default:  echo "À߸øµÈ ȸ¿øÁ¤º¸ ÀÔ´Ï´Ù.";
}

´õ Á¤È®ÇÏ°Ô °íÃƽÀ´Ï´Ù.

case  ¹®¿¡  preg_match¸¦ ³Ö¾î¼­ ¾²´Â°ÍÀº ¿À´Ã ±¸±Û¸µÇؼ­ óÀ½ ÇغýÀ´Ï´Ù.¤¾¤¾
Á¶±Ý ¸Ó¸®¿¡ ¿­ÀÌ ³µÁö¸¸ Àç¹Õ³×¿ä. ¤¾¤¾¤¾

https://stackoverflow.com/questions/38830349/preg-match-in-switch-case-in-php?noredirect=1&lq=1
Âü°íÇÑ ±ÛÀÔ´Ï´Ù.
ÄÚµù 1 ÀÌ ´õ ÁÁÀº ¹æ¹ýÀÌ ¾Æ´Ñ°¡¿ä? ¤¾¤¾¤¾
¾Æ´Ï¸é  $name1 $name2 $name3 À»  ¹è¿­º¯¼ö¿¡ ³Ö¾îµÎ°í
for  ·çƾÀ¸·Î ó¸®Çؼ­
ó¸®Çؼ­ continue ¸í·ÉÀ» »ç¿ëÇÏ´Â ¹æ¹ýµµ ÀÖ±ä Çѵ¥...
¾î¶»°Ô »ý°¢ÇÏ´ÂÁö¿ä?
º´Ã¶ 2019-09
¸¶Æ¾´ÔÀÇ Àü¾ðÀÔ´Ï´Ù....

$allow = array(¡°°©¼ø¡±, ¡°°©µ¹¡±, ¡°±æµ¿¡±)


function check_user($query, $allow) {
  foreach ($allow as &$value) {
    if ($value === $query || preg_match("/^$query/", $value) ): return True;
    }
    return False;
}
     
ÀÌÇØ°¡ µË´Ï´Ù.
ÇÔ¼öÈ­ ÇÏ¿© »ó´çÈ÷ ¹ßÀüµÈ °³³äÀ̳׿ä.
¤¾¤¾ °¨»çÇÕ´Ï´Ù.
¾ÈÀüÇÑ Á¶°ÇÀ» À§ÇØ === ±îÁö »ç¿ëÇϼ̳׿ä ... ±ÂÀÔ´Ï´Ù.
     
º´Ã¶´ÔÀÌ ¾Ë·ÁÁֽŠÄڵ带 ½ÇÁ¦·Î  Å×½ºÆ® ÇÏ¿© ¾Æ·¡¿Í °°ÀÌ ¿Ï·áÇÏ¿´½À´Ï´Ù.
----------------------------------

$cname="È«±æµ¿¸¶½Ç";

$name1="°©¼øÀÌ";
$name2="¿¡¸¯°©µ¹ÀÌ";
$name3="È«±æµ¿¸¶½Ç||23.323.22";

$allow_arr=array($name1, $name2, $name3);

function check_user($check_name, $allow_arr) {
  foreach ($allow_arr as $value) {
    if ($value === $check_name || preg_match("/^$check_name\|+/", $value) ) return True;
    }
    return False;
}

if(!check_user($cname, $allow_arr)) echo "not exist!";
preg_match() ¿Í strpos() µµ ºñ±³Çغ¸½Ã°í ÀûÀýÈ÷ »óȲ¿¡ ¸ÂÃç¼­ ¾²½Ã¸é ÁÁ½À´Ï´Ù.
 https://stackoverflow.com/questions/6433492/preg-match-vs-strpos-for-match-finding
     
º´Ã¶´ÔÀÇ ÇÔ¼ö¿¡ strpos¸¦ ³ÖÀ¸·Á°í
Çߴµ¥ °á±¹ ½ÇÆÐÇß½À´Ï´Ù
±èÁ¦¿¬ 2019-09
https://www.php.net/array_search
ÀÌ¿ëÇÏ½Ã¸é µÇÁö ¾ÊÀ»±î¿ä..
Àß ¾È¾²´Â ½ÇÇèÀûÀÎ ±¸¹®ÀÌÁö¸¸, ÀÌ·±°Íµµ µ¹¾Æ°¡±ä ÇÕ´Ï´Ù.

$cname = "È«±æµ¿¸¶½Ç1";

$name=array();
$name[] = "°©¼øÀÌ";
$name[] = "¿¡¸¯°©µ¹ÀÌ";
$name[] = "È«±æµ¿¸¶½Ç||23.323.22";

$check_user = function($arr, $f) {$r=0;array_walk($arr,function(&$v)use(&$r,$f){if(strpos($v,$f) === 0)$r=1;});return $r;};

if (!$check_user($name, $cname)) echo "not exist!";
     
array_walk ´Â Àß ¾È¾²´Â ÇÔ¼öÀε¥µµ
Àû¿ë½ÃÄѺ¸´Ï ±ò²ûÇÏ°Ô Àß ÀÛµ¿ÇÕ´Ï´Ù.
´õ±¸³ª preg_match¸¦ »ç¿ëÇÏÁö ¾Ê¾Æ ¼Óµµ¸é¿¡¼­´Â ´õ ºü¸£°Ô ÀÛµ¿ÀÌ  µÉ °ÍÀ¸·Î º¸ÀÔ´Ï´Ù.
     
óÀ½º¸´Â °ÍÀε¥...
function(&$v) ¶ó°í Áß°£¿¡ &À» ³Ö´Â °ÍÀº¹«¾ùÀ» ÀǹÌÇÏ´ÂÁö ÀüÇô ¸ð¸£°Ú½À´Ï´Ù. ¤Ð¤Ð
          
PHP¸¦ ¸¸µç ¾ð¾î°¡ CÀÔ´Ï´Ù. PHP¿¡¼­ »ç¿ëÇÏ´Â call by reference Àε¥, ÂüÁ¶ÀÚ¸¦ Àü´Þ ¹Þ¾Æ¼­ ¿øº» ¹®ÀÚ¿­À̳ª ¹è¿­°ªÀ» Á÷Á¢ »ç¿ëÇÏ°í º¯°æÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀÔ´Ï´Ù. function ¾ÈÀ¸·Î µé¾î°¡¸é º¸Åë ÇØ´ç ±¸°£¿¡¼­¸¸ »ç¿ëÇÏ´Â Áö¿ªº¯¼ö°¡ µÇ´Âµ¥, ÇÔ¼ö ¹Û¿¡¼­ Á¤ÀÇÇÑ ³»¿ëÀ» Á¶ÀÛÇÒ ÇÊ¿ä°¡ ÀÖÀ»¶§ °¡²û »ç¿ëÇÕ´Ï´Ù. °£´ÜÇÑ »ùÇÃÀ» ¼³¸íÇÑ °÷ÀÌ Àֳ׿ä https://www.javatpoint.com/php-call-by-reference
               
°¨»çÇÕ´Ï´Ù.
°¡²û Çѹø¾¿ º¸´Âµ¥... ±Ã±ÝÇß½À´Ï´Ù.

º¸Åë ÀÌ·± °æ¿ì´Â ±Û·Î¹ú º¯¼ö·Î ¼±¾ðÇؼ­ »ç¿ëÇÏ´ø°¡
¾Æ´Ï¸é ±×³É return Çش纯¼ö; ·Î Çؼ­ »ç¿ëÇϴµ¥...
´õ Æí¸®ÇÑ ¹æ¹ýÀ̷২ä.
±èÁ¦¿¬ 2019-09
°£´ÜÇѰŠã¾Ò³×¿ä ..
$haystack = array (
  'say hello',
  'hello stackoverflow',
  'hello world',
  'foo bar bas'
);

$matches  = preg_grep ('/^hello (\w+)/i', $haystack);

print_r ($matches);
¸¶Áö¸·¿¡ matches ÀÇ length ¸¦ ±¸Çؼ­ 0À̸é Àִ°Űí 1À̸é Àִ°ű¸¿ä.ÀÖÀ¸¸é array ·Î ¹Ýȯµµ µÇ±¸¿ä
     
¾ÆÁÖ ¸ÚÁý´Ï´Ù.
preg_grep °¡ ÀÖ´Ù´Â »ç½ÇÀº óÀ½ ¾Ë¾Ò½À´Ï´Ù.
ÃæºÐÈ÷ ÀÌÇØ°¡ µÇ°í °ø°¨ÀÌ µË´Ï´Ù.
¸ÚÁ®¿ä.
Çѹø¾¿ ÄÚµù À̾߱⸦ ¿Ã¸±¶§¸¶´Ù ¾ÆÁÖ ´Ù¾çÇÑ ¼Ö·ç¼ÇÀº Á¤¸» ³î¶ø½À´Ï´Ù.

length ´Â
echo count($matches);¸¦ ¸»ÇÏ´Â °ÍÀÌ°ÚÁö¿ä
          
±èÁ¦¿¬ 2019-09
³× count Çؼ­ .. 0ÀÎÁö 1ÀÎÁö È®ÀÎÇÏ½Ã¸é µÉµí


QnA
Á¦¸ñPage 1040/5677
2014-05   4937085   Á¤ÀºÁØ1
2015-12   1474051   ¹é¸Þ°¡
2021-04   3060   hyunwoo3480
. (9)
2017-07   3061   Ãʺ¸IT
2020-04   3061   ¼ÛÁøÇö
2021-03   3061   »õ·Î¿îÂ÷¿ø
2018-08   3061   ¸ÓÀç±ä
2023-10   3061   °Ç¾à
2017-04   3061   sik2
2019-07   3061   ½º¹«ÇÁ
2019-12   3061   ¹ÚÁ¤ÁØ
2021-10   3061   ¼±³à¿Í³ªÈÄ¡¦
2017-04   3061   ÇູÇϼ¼
2020-01   3061   ¸®Àå´Ô
2021-05   3061   ¿µ»êȸ»ó
2021-07   3062   ³ª·Î¿Í
2019-12   3062   f0recast
2019-10   3062   Á¦¶óµåTN
2021-06   3062   dateno1
2020-10   3062   ÀüÁø
2019-07   3062   Â÷ÀÌÇϳ×
2020-12   3062   ³ª½ºÃʺ¸¿¡¿ä