zoukankan      html  css  js  c++  java
  • PHP中extract函数各种用法介绍

    直接上代码:

     代码如下 复制代码
    <?php
    $my_array = array("a" => "Cat","b" => "Dog", "c" => "Horse");
    extract($my_array);
    echo "$a = $a; $b = $b; $c = $c";
    ?>

    猜猜会会出现什么结果?

    输出:

     代码如下 复制代码
    $a = Cat; $b = Dog; $c = Horse

    没有定义变量$a $b $c ,也没有赋值,为什么就可以可以获取值了?


    比方说,可以很方便的提取$_POST或者$_GET的元素,对表单提交上来的内容不能不用一一赋值,直接使用下面代码:

    form.html

     代码如下 复制代码

     <form action="action.php" method="post">
    <input type="text" name="username">
    <input type="password" name="password">
    <input type="submit">

    在action.php中只要使用extract()函数将$_POST全局数据解开:
    action.php

     代码如下 复制代码

     <?php
    extract($_POST);
    //相当于$username = $_POST['username'];
    //$password = $_POST['password'];
    ?>


    数组操作


    相关例子:

     代码如下 复制代码
    <?php

    /* 假定 $var_array 是 wddx_deserialize 返回的数组*/

    $size = "large";
    $var_array = array("color" => "blue",
    "size" => "medium",
    "shape" => "sphere");
    extract($var_array, EXTR_PREFIX_SAME, "wddx");

    echo "$color, $size, $shape, $wddx_sizen";

    ?>
     


    上例将输出:

    blue, large, sphere, medium
    $size 没有被覆盖,因为指定了 EXTR_PREFIX_SAME,这使得 $wddx_size 被建立。如果指定了 EXTR_SKIP,则 $wddx_size 也不会被建立。EXTR_OVERWRITE 将使 $size 的值为“medium”,EXTR_PREFIX_ALL 将建立新变量 $wddx_color,$wddx_size 和 $wddx_shape。


    数组2


    .适用范围:非数字索引的数组,数组中有键值对;
    2.函数创建的变量名是数组中的关键字,变量的值是数组中对应的值;
    3.两个可选参数:extract_type和prefix;
        其中extract_type指定处理变量名冲突的方法,默认是EXTR_OVERWRITE,表示覆盖已有的变量,
        当extract_type的值为EXTR_PREFIX_ALL时,给所有创建的变量前加上前缀,前缀为prefix参数提供;
    4.数组中元素的关键字必须是有效的变量名,否则将被跳过。
       
    实例:

    array_extract.php:

     代码如下 复制代码
    <html>
        <head>
            <title>Test Array Extract</title>
        </head>
        <body>
            <?php
                $array = array('key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3');
                extract($array);
                echo 'Default:<br />';
                echo "$key1 $key2 $key3<br />";
               
                //发生冲突时跳过一个元素
                $key1 = "abc";
                extract($array, EXTR_SKIP);
                echo 'Skip:<br />';
                echo "$key1 $key2 $key3<br />";

                //在所有变量名前加上由prefix参数提供的值
                extract($array, EXTR_PREFIX_ALL, 'my');
                echo 'Prefix_All:<br />';
                echo "$my_key1 $my_key2 $my_key3<br />";
            ?>
        </body>
    </html>
     


    是不是很方便呢?

    更多详细内容请查看:http://www.111cn.net/phper/php-cy/43349.htm

  • 相关阅读:
    循序渐进Linux 1:Linux的基本结构
    Django通过中间件实现登录验证demo
    Django中简单添加HTML、css、js等文件(非正规添加,适合小白)
    数据库之MySQL
    前端之JQuery
    核心编程之第一章正则表达式
    前端之JS
    python基础面试常见题
    前端之CSS
    前端之HTML
  • 原文地址:https://www.cnblogs.com/phpfans2012/p/2643091.html
Copyright © 2011-2022 走看看