php special feature

 

脚本之家 PHP编程与应用 

http://www.jb51.net/article/1886.htm

Special:

1.

数组,你只需将要赋值赋给不带下标的数组变量。该值会作为数组的最后元素加进数组中。 

  例: 

   $names[] = "Jill"; // $names[0] = "Jill" 

   $names[] = "Jack"; // $names[1] = "Jack" 

2.

$a=1;   $b=2; 

       Function Sum() { 

         global $a,$b; 

         $b = $a + $b; 

              } 

       Sum(); 

       echo $b;   // got 3 not 0, because $a and $b have been changed to global, by default was local variable.

Similiar use Static in non-static function, not like C (static variable must in Static function):

Function Test() { 

        static $a=0; 

        echo $a; 

        $a++; 

      } 

3.

(二) 动态变量 

  有时使用可变的变量名比较方便。就是说,一个能够被动态赋值和使用的变量名。一个普通变量的赋值语句如: 

    $a = "hello"; 

  一个动态变量引用该变量的值作为一个新变量的名字。在上面例中, hello,可以通过双$用做变量名。例: 

    $$a = "world"; 

至此,两个变量被定义并存贮在PHP符号树中: $a 的内容是"hello",$hello 的内容是 "world"。 因此,语句: echo "$a ${$a}"; 的显示结果完全等同于: echo "$a $hello"; 

4.

  当一个表单提交给PHP3 script时,PHP会自动得到表单中的变量。例如: 

      <form action="foo.php3" method="post"> 

      Name: <input type="text" name="name"><br> 

      <input type="submit"> 

      </form> 

当按下”submit”后,PHP3会自动产生变量:$name,其中包含了用户输入的所有内容。 

5.

当提交一个表单时,可以通过下面标记用一副图代替标准的提交按钮: 

   <input type=image src="image.gif" name="sub"> 

当用户点击该图时,两个附加变量sub_x和sub_y就会伴随表单一起送到server上。其中包含了用户在图上点击处的坐标。

6.

环境变量 

  PHP自动将环境变量转换为普通的变量。 

    echo $HOME; /* Shows the HOME environment variable, if set. */ 

  尽管来自GET,POST 及 Cookie结构的信息也会被自动转化为PHP的变量, 但最好明确的从环境变量中读取它们以确保获得正确的值。为此可使用 getenv() 函数。也可以通过 putenv() 函数设置变量

7.

    $foo = "0"; // $foo is a string (ASCII 48) 

    $foo++; // $foo is the string "1" (ASCII 49) 

    $foo += 1; // $foo is now an integer (2) 

    $foo = $foo + 1.3; // $foo is now a double (3.3) 

    $foo = 5 + "10 Little Piggies"; // $foo is a double (15)   不好

    $foo = 5 + "10 Small Pigs"; // $foo is an integer (15)  不好 

要改变变量的类型,也可用settype() 函数。 

8.

$a = ($b = 4) + 5; // 现在 $a 等于 9, $b为4 。 

'$b = ($a = 5)'的语句,就象 '$a = 5; $b = 5;' (每条语句末尾有一个分号)。因为赋值的顺序是从右向左的你也可以写成 '$b = $a =5'

9.

INCLUDE语句以包含一系列不同的文件。 



    $files = array('first.inc', 'second.inc', 'third.inc'); 

    for ($i = 0; $i < count($files); $i++) { 

      include($files[$i]); 

     } 

10.

返回多个值,但可以通过返回列表的方法来实现: 

  function foo() { 

   return array( 0, 1, 2 ); 

   } 

  list( $zero, $one, $two ) = foo(); 

 

11.

指针修改原值:

function foo( &$bar ) { 

    $bar .= ' and something extra.'; 

   } 

  $str = 'This is a string, '; 

  foo( $str ); 

  echo $str; // outputs 'This is a string, and something extra.' 

----------------------------------------------------------------------------------------

或传指针给子程:

function foo( $bar ) { 

    $bar .= ' and something extra.'; 

   } 

  $str = 'This is a string, '; 

  foo( $str ); 

  echo $str; // outputs 'This is a string, ' 

  foo( &$str ); 

  echo $str; // outputs 'This is a string, and something extra.' 

12.

构造器也可以有参数,这些参数是可选的,这种特点也使得其十分有用。 

  class Cart { 

   function Cart($item = "10", $num = 1) { 

     $this->add_item($item, $num); 

    } 

   } 

     // Shop the same old boring stuff. 

  $default_cart = new Cart; 

    // Shop for real... 

  $different_cart = new Cart("20", 17); 

 

How about $different_cart = new Cart("30");   ???