PHP 에서 extract 함수 사용

9932 단어 PHPextract
php 의 extract 함수
extract 함 수 는 하나의 숫자 를 여러 변수 로 분해 하여 직접 사용 합 니 다.다음은 W3C 의 설명 입 니 다.PHP extract()함 수 는 배열 에서 변 수 를 현재 기호 표 에 가 져 옵 니 다.배열 의 모든 요소 에 대해 키 이름 은 변수 이름 에 사용 되 고 키 값 은 변수 값 에 사 용 됩 니 다.두 번 째 매개 변수 type 은 특정한 변수 가 존재 하고 배열 에 같은 이름 의 요소 가 있 을 때 extract()함수 가 이러한 충돌 을 어떻게 대처 하 는 지 지정 하 는 데 사 용 됩 니 다.이 함 수 는 성공 적 으로 설 정 된 변수 수 를 되 돌려 줍 니 다.
아래 표 는 매개 변수 설명 입 니 다.
문법
extract(array,extract_rules,prefix)
매개 변수
묘사 하 다.
array
필수사용 할 입력 을 규정 하 다.
extract_rules
선택 할 수 있다.extract()함 수 는 모든 키 이름 이 합 법 적 인 변수 이름 인지 확인 하 는 동시에 기호 표 의 변수 이름 과 충돌 하 는 지 확인 합 니 다.
불법,숫자,충돌 키 이름 에 대한 처 리 는 이 매개 변수 에 따라 결 정 됩 니 다.다음 값 중 하나 일 수 있 습 니 다:
가능 한 값:
  • EXTR_OVERWRITE-기본 값.충돌 이 있 으 면 기 존 변 수 를 덮어 씁 니 다
  • EXTR_SKIP-충돌 이 있 으 면 기 존 변 수 를 덮어 쓰 지 않 습 니 다.(배열 의 같은 이름 의 요 소 를 무시 합 니 다)
  • EXTR_PREFIX_SAME-충돌 이 있 으 면 변수 이름 앞 에 접두사 prefix 를 붙 입 니 다.PHP 4.0.5 부터 디지털 색인 처리 도 포함 되 어 있 습 니 다
  • EXTR_PREFIX_ALL-모든 변수 이름 에 접두사 prefix(세 번 째 인자)를 추가 합 니 다
  • EXTR_PREFIX_INVALID-불법 또는 디지털 변수 이름 앞 에 만 접두사 prefix 를 붙 입 니 다.이 표 시 는 PHP 4.0.5 에 새로 추 가 된 것 입 니 다
  • EXTR_IF_EXISTS-현재 기호 표 에 같은 이름 의 변수 가 있 을 때 만 값 을 덮어 씁 니 다.다른 건 다 안 해.합 법 적 인 변 수 를 정의 한 다음$와 같은 배열 에서 사용 할 수 있 습 니 다.REQUEST 에서 추출 값 이 이 변 수 를 덮어 쓰 는 장소 입 니 다.이 표 시 는 PHP 4.2.0 에 새로 추 가 된 것 입 니 다
  • EXTR_PREFIX_IF_EXISTS-현재 기호 표 에 만 같은 이름 의 변수 가 있 을 때 접 두 사 를 추가 한 변수 이름 을 만 들 고 다른 것 은 처리 하지 않 습 니 다.이 표 시 는 PHP 4.2.0 에 새로 추 가 된 것 입 니 다
  • EXTR_REFS-인용 으로 변 수 를 추출 합 니 다.이것 은 가 져 온 변수 가 여전히 var 를 인용 하고 있 음 을 힘 있 게 나타 낸다.array 매개 변수의 값.이 표식 을 단독으로 사용 하거나 extract 에서 사용 할 수 있 습 니 다.type 에서 OR 와 다른 모든 플래그 를 결합 하여 사용 합 니 다.이 표 시 는 PHP 4.3.0 에 새로 추 가 된 것 입 니 다
  • prefix
    선택 할 수 있다.prefix 는 extract 에 만 있 습 니 다.type 의 값 은 EXTRPREFIX_SAME,EXTR_PREFIX_ALL,EXTR_PREFIX_INVALID 또는 EXTRPREFIX_IF_EXISTS 에 필요 합 니 다.접두사 가 추 가 된 결과 가 합 법 적 인 변수 이름 이 아니라면 기호 표 에 가 져 오지 않 습 니 다.
    접두사 와 배열 키 사이 에 자동 으로 밑줄 이 붙 습 니 다.
    이것 은 데이터베이스 에서 한 줄 의 데 이 터 를 얻 을 때 매우 유용 하 다.우 리 는 아래 의 예 를 보 자.
    
    <?php 
    $db = mysql_connect('localhost','root','Ctrip07185419') or die('can not connect to mysql');
    mysql_select_db('moviesite',$db) or die(mysql_error($db));
    mysql_query('set names gbk',$db);
    if(isset($_GET['action']) && $_GET['action'] == 'edit') 
    {
        $query = 'SELECT movie_name,movie_type,movie_year,movie_leadactor,movie_director FROM movie WHERE movie_id='.$_GET['id'];
        //echo $query;
        $result = mysql_query($query , $db) or die(mysql_error($db));
        extract(mysql_fetch_assoc($result));
    }
    else
    {
        $movie_name='';
        $movie_type=0;
        $movie_year=date('Y');
        $movie_leadactor=0;
        $movie_director=0;
    }
    ?>
    <html>
        <head>
            <title><?php echo ucfirst($_GET['action']);?> Movie</title>
            <style type="text/css"></style>
        </head>
        <body> 
            <form action="commit.php?action=<?php echo $_GET['action'];?>&type=movie" method="post"> 
                <table>
                    <tr>
                        <td>Movie Name</td>
                        <td><input type="text" name="movie_name" value="<?php echo $movie_name;?>"/></td>
                    </tr>
                    <tr>
                        <td>Movie Type</td>
                        <td><select name="movie_type" id="">
                        <?php 
                            $query = 'select movietype_id,movietype_label from movietype order by movietype_label';
                            $result = mysql_query($query , $db) or die(mysql_error($db));
                            while($row = mysql_fetch_assoc($result))
                            {
                                if($row['movietype_id'] == $movie_type)
                                {
                                    echo '<option value="'.$row["movietype_id"].'" selected="selected">'.$row["movietype_label"].'</option>';
                                }
                                else
                                {
                                    echo '<option value="'.$row["movietype_id"].'">'.$row["movietype_label"].'</option>';
                                }
                            }
                        ?>
                        </select></td>
                    </tr>
                    <tr>
                        <td>Movie Year</td>
                        <td><select name="movie_year" id="">
                        <?php 
                            for($yr = date('Y');$yr>1970;$yr--)
                            {
                                if($yr == $movie_year)
                                {
                                    echo '<option value="'.$yr.'" selected="selected">'.$yr.'</option>';
                                }
                                else
                                {
                                    echo '<option value="'.$yr.'">'.$yr.'</option>';
                                }
                            }
                        ?>
                        </select></td>
                    </tr>
                    <tr>
                        <td>Lead actor</td>
                        <td><select name="movie_leadactor" id="">
                        <?php 
                            $query = 'select people_id,people_fullname from people where people_isactor = 1 order by people_fullname';
                            $result = mysql_query($query,$db) or die(mysql_error($db));
                            while($row = mysql_fetch_assoc($result))
                            {
                                if($row["people_id"] == $movie_leadactor)
                                {
                                    echo '<option value="'.$row["people_id"].'" selected="selected">'.$row["people_fullname"].'</option>';
                                }
                                else
                                {
                                    echo '<option value="'.$row["people_id"].'">'.$row["people_fullname"].'</option>';
                                }
                                
                            }
                        ?>
                        </select></td>
                    </tr>
                    <tr>
                        <td>Director</td>
                        <td><select name="movie_director" id="">
                        <?php
                            $query = 'select * from people where people_isdirector=1 order by people_fullname';
                            $result = mysql_query($query , $db) or die(mysql_error($db));
                            while($row = mysql_fetch_assoc($result))
                            {
                                if($row['people_id'] == $movie_director)
                                {
                                    echo '<option value="'.$row['people_id'].'" selected="selected">'.$row["people_fullname"].'</option>';
                                }
                                else
                                {
                                    echo '<option value="'.$row['people_id'].'">'.$row["people_fullname"].'</option>';
                                }
                            }
                        ?>
                        </select></td>
                    </tr>
                    <tr>
                        <td colspan="2" style="text-align:center">
                            <?php 
                            if('edit' == $_GET['action'])
                            {
                                echo '<input type="hidden" value="'.$_GET["id"].'" name="movie_id"/>';
                            }
                            ?>
                            <input type="submit" name="submit" value="<?php echo ucfirst($_GET['action']);?>"/>
                        </td>
                    </tr>
                </table>
            </form>
        </body>
    </html>
    빨간색 으로 표 시 된 문 구 를 주의 하 십시오.extract 를 사용 한 후에 변 수 를 직접 사용 할 수 있 고 변수의 이름 은 필드 이름 입 니 다.변수의 값 은 필드 의 값 입 니 다.이것 은 ado.net 에서 DataReader 나 DataSet 에서 데 이 터 를 얻 는 방법 Movie.Name=DataSet.Table[o].Row[i]["Name"].ToString()Movie.Name=reader["Name"].ToString()과 유사 합 니 다.
    비교 해 보면 php 의 이 extract 방식 은 비교적 간단 하고 직접적 이지 않 습 니까?
    PHP 에서 extract 함 수 를 사용 하 는 것 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 PHP extract 함수 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 바 랍 니 다!

    좋은 웹페이지 즐겨찾기