PHP和MySQL開發(fā)—第三章 數(shù)組

第三章 數(shù)組

  • 數(shù)組是一個(gè)可以存儲(chǔ)一組或一系列數(shù)值的變量
  • 一個(gè)包含其他數(shù)組的數(shù)組稱為多維數(shù)組诗舰。
  • 關(guān)聯(lián)數(shù)組允許使用更有意義的數(shù)據(jù)作為索引(也就是通常所說的數(shù)組下標(biāo))
    1.數(shù)組
  • 數(shù)組信息的整個(gè)集合可以作為一個(gè)單元進(jìn)行移動(dòng)
  • 存儲(chǔ)在數(shù)組中的值稱為數(shù)組元素(value)
  • 每個(gè)數(shù)組有一個(gè)相關(guān)的索引碉考,也成為關(guān)鍵字(key),其實(shí)就是平時(shí)所稱的數(shù)組下標(biāo)尘盼;可以用它來訪問元素。
  • PHP允許間隔性的使用數(shù)字或字符串作為數(shù)組的索引输钩∫沓妫可以將數(shù)組的索引設(shè)置為傳統(tǒng)的數(shù)字型,也可以將索引設(shè)置為任何所希望的索引沉帮,這樣可以使得索引更有意義和有用锈死。。

2.數(shù)字索引數(shù)組

  • array()實(shí)際上是一個(gè)語言結(jié)構(gòu)穆壕,而不是一個(gè)函數(shù)待牵。
  • range()函數(shù)
    • 如果需要按升序排列的數(shù)字保存在一個(gè)數(shù)組中,可以使用range()函數(shù)自動(dòng)創(chuàng)建數(shù)組喇勋。
    • ranger()函數(shù)具有一個(gè)可選的第三個(gè)參數(shù)缨该,這個(gè)參數(shù)允許設(shè)定 值之間 的步幅
  • 想要訪問一個(gè)變量的內(nèi)容,可以直接使用其變量名稱川背;如果該變量是一個(gè)數(shù)組贰拿,可以使用變量名稱和關(guān)鍵字或索引的組合來訪問其內(nèi)容蛤袒。
  • 當(dāng)將數(shù)組或其他變量嵌入雙引號(hào)中的字符串時(shí),如果不能正確解釋它們膨更,可以將它們放置在雙引號(hào)之外妙真?
  • PHP可以動(dòng)態(tài)調(diào)整數(shù)組的大小

3.使用不同索引的數(shù)組

  • 在關(guān)聯(lián)數(shù)組中,可以將每個(gè)變量值與任何關(guān)鍵字或索引關(guān)聯(lián)起來荚守。通俗來說就是每個(gè)變量值都可以給予其專有的數(shù)組下標(biāo)珍德。
  • 創(chuàng)建數(shù)組的三種方法:
    (1)最常見也是使用最廣的方法。

$prices=array('Tires'=>100,'Oil'=>10,'Spark Plugs'=>4);

    (2)下述代碼的意思先創(chuàng)建只有一個(gè)元素的數(shù)組$prices矗漾,然后再向其中添加額外的兩個(gè)元素锈候。
    ```
$prices=array('Tires'=>100);
$price['Oil']=10;
$price['Spark Plugs']=4;
(3)該種方法雖然寫法不同,但實(shí)際功能和上面是一樣的
$prices['Tires']=100;
$prices['Oil']=10;
$prices['Spark Plugs']=4;
  • 循環(huán)語句
    • foreach語句
      • 該語句是專門用來循環(huán)數(shù)組的缩功。
foreach($prices $key=>$value){
                echo $key."-".$value."<br />";
        }
    - 意思是將\$prices數(shù)組中的索引(數(shù)組下標(biāo))保存在\$key中晴及,同時(shí)將數(shù)組的元素值保存到$value中,然后循環(huán)打印嫡锌。
    
- each()語句
    - 該函數(shù)將放回?cái)?shù)組的當(dāng)前元素,并將下一個(gè)元素作為當(dāng)前元素琳钉。
    ```

while($element=each($prices)){
echo $element['key'];
echo "-";
echo $element['value'];
echo "<br />";
}

        - \$elemente是一個(gè)數(shù)組势木。當(dāng)使用each()時(shí),它將返回一個(gè)帶有4個(gè)數(shù)值和4個(gè)指向數(shù)組位置的索引的數(shù)組;
        - 位置key和0包含了當(dāng)前元素的關(guān)鍵字歌懒,而位置value和1包含了當(dāng)前元素的值啦桌。
        - 所謂的4個(gè)數(shù)值和4個(gè)指向數(shù)組位置的索引如下圖所示:
            - ![](http://upload-images.jianshu.io/upload_images/4167376-f780d201f34d6bbc.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

    - list()語句
        - 函數(shù)list()可以用來將一個(gè)數(shù)組分解為一系列的值。
        ```
while(list($product,$price)=echo($prices)){
            echo "$product-$price<br/>";        
        }
        ```
        - list函數(shù)通常和each函數(shù)共同使用及皂,先使用each()函數(shù)從\$prices數(shù)組中取出當(dāng)前元素甫男,并將其作為數(shù)組返回;然后再使用list()將從each()返回的數(shù)組中包含0验烧、1兩個(gè)元素變?yōu)閮蓚€(gè)名為\$product和\$price的新變量板驳。
        - list()函數(shù)的最大優(yōu)點(diǎn)在于可以為新變量命名,使其更容易閱讀碍拆。

**4.數(shù)組操作符**
- ![數(shù)組操作符](http://upload-images.jianshu.io/upload_images/4167376-96844b084cb40869.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

- 聯(lián)合操作符是將\$b中的元素添加到\$a的末尾若治。如果\$b中的元素與\$a中的一些元素具有相同的索引(數(shù)組下標(biāo)),他們將不會(huì)被添加感混,也就是說$a中的元素將不會(huì)被覆蓋端幼。

**5.多維數(shù)組**
- 常見的二維數(shù)組形式:
`$products=array(array('TIR','Tires',100),array('OIL','Oil',10),array('SPK','Spark Plugs',4));`
    - 與一維數(shù)組一樣,二維數(shù)組也可以自己命名列名稱來代替一般的索引數(shù)字弧满。
    - 將所描述的內(nèi)容保存到用它的名稱命名的列中婆跑,會(huì)比將其保存到所謂的第一列中更容易記住庭呜;如上述代碼也可以改為:

$products=array(array('Code'=>'TIR,'Description'=>'Tires''Price'=>100),
array('Code'=>'OIL','Description'=>'Oil','Price'=>10),
array('Code'=>'SPK','Description'=>'Spark Plugs', 'Price'=>4));

    - 同樣的也可以將`array('Code'=>'TIR,'Description'=>'Tires''Price'=>100),`前面的array進(jìn)行自定義命名滑进,*例如:*
        ```
$products=array('xxx'=>array('Code'=>'TIR','Description'=>'Tires','Price'=>100),
                    'yyy'=>array('Code'=>'OIL','Description'=>'Oil','Price'=>10),
                    'zzz'=>array('Code'=>'SPK','Description'=>'Spark Plugs', 'Price'=>4));
print_r ($products);
echo "<br /><br />".$products['zzz']['Description'];
- ![最后輸出效果](http://upload-images.jianshu.io/upload_images/4167376-6627051761bdf3eb.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
  • 三維數(shù)組
    • 三維數(shù)組具有高犀忱、寬、深的概念郊供;每個(gè)元素可以通過層峡碉、行和列進(jìn)行引用;例如:

$categories=array(
array(array('CAR_TIR','Tires',100),array('CAR_OIL','Oil',10),array('CAR_SPK','Spark Plugs',4)),
array(array('VAN_TIR','Tires',120),array('VAN_OIL','Oil',12),array('VAN_SPK','Spark Plugs',5)),
array(array('TRK_TIR','Tires',150),array('TRK_OIL','Oil',15),array('TRK_SPK','Spark Plugs',6))
);

    - ***大多數(shù)的實(shí)際問題在邏輯上只需要使用三維或更少維的數(shù)組結(jié)構(gòu)就可以了***

**6.*數(shù)組排序**
- sort()函數(shù)
    - 可以將數(shù)組按照升序進(jìn)行排序
    - 該函數(shù)是區(qū)分字母大小寫的驮审。所有大寫字母都在小寫字母前面鲫寄,也就是說A<Z<a<z。
    - 該函數(shù)第二個(gè)參數(shù)可選的疯淫;可以通過設(shè)定值來改變排序的行為:
        - SORT_REGULAR - 正常比較單元(不改變類型) 
        - SORT_NUMERIC - 單元被作為數(shù)字來比較 
        - SORT_STRING - 單元被作為字符串來比較 
        - SORT_LOCALE_STRING - 根據(jù)當(dāng)前的區(qū)域(locale)設(shè)置來把單元當(dāng)作字符串比較地来,可以用 setlocale() 來改變。  
        - SORT_NATURAL - 和 natsort() 類似對(duì)每個(gè)單元以"自然的順序"對(duì)字符串進(jìn)行排序熙掺。 PHP 5.4.0 中新增的未斑。 
        - SORT_FLAG_CASE - 能夠與 SORT_STRING 或 SORT_NATURAL 合并(OR 位運(yùn)算),不區(qū)分大小寫排序字符串币绩。
    - 指定排序類型的功能是非常有用的蜡秽。

- asort()函數(shù)與ksort()函數(shù)
    - asort()函數(shù)就是根據(jù)數(shù)組的每個(gè)元素值(value)來進(jìn)行排序;
    - ksort()函數(shù)就是根據(jù)關(guān)鍵字(key)排序缆镣。
    ```
$prices=array('Tires'=>100,'Oil'=>10,'Spark Plugs'=>4);
    asort($prices);
    echo "按照元素值(value)排序:<br/>";
    print_r($prices);
    echo  "<br/><br/>";
    ksort($prices);
    echo "按照關(guān)鍵字(key)排序:<br/>";
    print_r($prices);
- ![](http://upload-images.jianshu.io/upload_images/4167376-6c1d1664e70d82e9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
  • 反向排序
    • 和sort()芽突、asort()、ksort()雖然排序標(biāo)準(zhǔn)不同董瞻,但都是按照升序來排列寞蚌;
    • 與之相對(duì)的rsort()、arsort()钠糊、krsort()則是將數(shù)組按照降序進(jìn)行排列挟秤。

$prices=array('Tires'=>100,'Oil'=>10,'Spark Plugs'=>4);
arsort($prices);
echo "按照元素值(value)排序:
";
print_r($prices);
echo "

";
krsort($prices);
echo "按照關(guān)鍵字(key)排序:
";
print_r($prices);

    - ![Paste_Image.png](http://upload-images.jianshu.io/upload_images/4167376-7e251cf15bd1c336.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

**7.多維數(shù)組排序**
- *PHP是不能比較兩個(gè)數(shù)組間大小的,因此需要使用函數(shù)usort()告訴PHP如何比較各個(gè)元素抄伍。*
        $products=array(array('CIR','Tires',100),
                            array('AIL','Oil',10),
                            array('SPK','Spark Plugs',4));
        function compare($x , $y){
            if($x[1] == $y[1]){
                return 0;
            }else if( $x[1] < $y[1]){
                return -1;
            }else {
                return 1;
            }
        }
        usort($products,'compare');
        print_r($products);
    - ![按索引為1的變量:字母排序](http://upload-images.jianshu.io/upload_images/4167376-2f23d5efb4c94ce1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

    - \$x和\$y分別是\$products數(shù)組下的兩個(gè)子數(shù)組艘刚,所以\$x[1]是X子數(shù)組下的索引為1的元素值,\$y[1]是y子數(shù)組下的索引為1的元素值逝慧,然后\$x[1]與\$y[1]比大小昔脯。
- ***如果想要對(duì)數(shù)字比較大小,則compare()函數(shù)則可以改為:***

$products=array(array('CIR','Tires',100),
array('AIL','Oil',10),
array('SPK','Spark Plugs',4));
function compare($x , $y){
if($x[2] == $y[2]){
return 0;
}else if( $x[2] < $y[2]){
return -1;
}else {
return 1;
}
}
usort($products,'compare');
print_r($products);```
-


按索引為2的變量:數(shù)字排序
  • 如果想要按照降序進(jìn)行排列:
$products=array(array('CIR','Tires',100),
                    array('AIL','Oil',10),
                    array('SPK','Spark Plugs',4));
function compare($x  ,  $y){
    if($x[2]  ==  $y[2]){
        return 0;
    }else if( $x[2]  <  $y[2]){
        return 1;
    }else {
        return -1;
    }
}
usort($products,'compare');
print_r($products);
- 
按照降序排列
  • 如果是關(guān)聯(lián)數(shù)組笛臣,既已經(jīng)給子數(shù)組的索引值進(jìn)行了自定義命名云稚,則進(jìn)行排序應(yīng)該按照定義的命名來輸入:
$products=array(array('Code'=>'TIR','Description'=>'Tires','Price'=>100),
                    array('Code'=>'OIL','Description'=>'Oil','Price'=>10),
                    array('Code'=>'SPK','Description'=>'Spark Plugs', 'Price'=>4));
function compare($x  ,  $y){
    if($x['Price'] == $y['Price']){
        return 0;
    }else if($x['Price'] < $y['Price']){
        return -1;
    }else {
        return 1;
    }
}
usort($products,'compare');
print_r($products);```
    - 
![按照自定義命名進(jìn)行排序](http://upload-images.jianshu.io/upload_images/4167376-a0e8d525f1f35e2e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)


- 與一維數(shù)組排序一樣,多維數(shù)組如果需要對(duì)索引或值進(jìn)行排序時(shí):
    - 對(duì)非數(shù)字索引數(shù)組的值進(jìn)行排序時(shí)沈堡,可以使用uasort()函數(shù)静陈;
    - 對(duì)非數(shù)字索引數(shù)組的關(guān)鍵字進(jìn)行排序時(shí),可以使用uksort()函數(shù)。

**8.對(duì)數(shù)組進(jìn)行重新排序**
- shuffle()函數(shù)
    - 該函數(shù)將數(shù)組更元素進(jìn)行隨機(jī)排序鲸拥。
- array_reverse()函數(shù)
    - 將數(shù)組進(jìn)行逆序排列
    - 其所返回的是原數(shù)組修改后的副本拐格,可以將其進(jìn)行覆蓋。
- array_push()函數(shù)
    - 可以使用該函數(shù)將新元素添加到數(shù)組的末尾刑赶。

**9.文件載入數(shù)組**
-用PHP分離捏浊、格式化并顯示內(nèi)容

![原始txt抓取數(shù)據(jù)](http://upload-images.jianshu.io/upload_images/4167376-fa77cd081e4a3068.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
<?php
    $orders=file("\$DOCUMENT_ROOT\/..\/orders\/orders.txt");
    $numOrders=count($orders);
    if($numOrders==0){
        echo "<p><strong>No order pending.Please try again later.</strong></p>";
    }
        echo "<table border=\"1\">\r\n";
        echo "<tr><th bgcolor=\"#ccccff\">Order Date</th>
                  <th bgcolor=\"#ccccff\">Tires</th>
                  <th bgcolor=\"#ccccff\">Oil</th>
                  <th bgcolor=\"#ccccff\">Spark Plugs</th>
                  <th bgcolor=\"#ccccff\">Total</th>
                  <th bgcolor=\"#ccccff\">Address</th>
             </tr>";
    for($i=0;$i<$numOrders;$i++){
        $line=explode("\t",$orders[$i]);
    
    $line[1]=intval($line[1]);
    $line[2]=intval($line[2]);
    $line[3]=intval($line[3]);
    
    echo "<tr>
              <td>".$line[0]."</td>
              <td align=\"right\">".$line[1]."</td>
              <td align=\"right\">".$line[2]."</td>
              <td align=\"right\">".$line[3]."</td>
              <td align=\"right\">".$line[4]."</td>
              <td>".$line[5]."</td>
         </tr>";
    }
    echo "</table>";
?>
- 
![最終效果](http://upload-images.jianshu.io/upload_images/4167376-e4fde4bc3ec141ba.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

- file()函數(shù)是把結(jié)果發(fā)送到一個(gè)數(shù)組中,文件中的每一行都將作為一個(gè)元素保存在該數(shù)組中撞叨。
- intval()函數(shù)可以將一個(gè)字符串轉(zhuǎn)化成一個(gè)整數(shù)金踪。


**10.其他數(shù)組操作**
- 瀏覽數(shù)組
    -  current()調(diào)用該數(shù)組將返回第一個(gè)元素。
    -  next()調(diào)用該函數(shù)是將指針遷移牵敷,然后再返回新的元素胡岔。
        -  與each()函數(shù)的區(qū)別:
            -  each()函數(shù)是會(huì)先返回當(dāng)前元素,然后再將指針前移枷餐;
            -  next()函數(shù)則是先將指針前移靶瘸,然后返回新的元素。
   
    - reset()和end()函數(shù):
        - reset()函數(shù):返回指向數(shù)組的第一個(gè)元素的指針
        - end()函數(shù):將指針移到數(shù)組末尾毛肋。
        - reset()和end()函數(shù)可以分別返回指向數(shù)組的第一個(gè)和最后一個(gè)元素怨咪。
    - prev()函數(shù):該函數(shù)與next()函數(shù)相反,是將當(dāng)前指針往回移一個(gè)位置然后再返回新的當(dāng)前元素润匙。
        - ```
$array=range(1,10,2);
 $value = end( $array);
while($value){
    echo "$value<br />";
    $value  =  prev($array);
}
    - ![逆序排列輸出](http://upload-images.jianshu.io/upload_images/4167376-b50782961fb91fd8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
  • array_walk()函數(shù)
    • bool array_walk(array arr, string func, [mixed userdata])
    • array_walk()函數(shù)要求聲明一個(gè)用戶自己的函數(shù)惊暴。
    • 簡(jiǎn)單來說就是:對(duì)數(shù)組中的每個(gè)元素應(yīng)用用戶自定義函數(shù)。
    • array_walk()函數(shù)的參數(shù):
      • 第一個(gè)參數(shù)是arr,也就是需要處理的數(shù)組趁桃;
      • 第二個(gè)參數(shù)是func,也就是用戶自定義并將作用于數(shù)組中每個(gè)元素的函數(shù)肄鸽;
      • 第三個(gè)參數(shù)userdata是可選的卫病,如果使用它,它可以作為一個(gè)參數(shù)傳遞給用戶自己的函數(shù)典徘。
    • 例子:

$array=range(1,10);
function my_multiply($value,$key,$factor){
$value *= $factor;
print_r($value);
echo "|";
}
array_walk($array,'my_multiply',3);

        - 
![最終效果圖](http://upload-images.jianshu.io/upload_images/4167376-7086ca5846279480.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)


- 統(tǒng)計(jì)數(shù)組個(gè)數(shù)
    - count()和sizeof()函數(shù)
        - 兩個(gè)函數(shù)的用途相同蟀苛,都可以返回?cái)?shù)組元素的個(gè)數(shù)。
        - 兩個(gè)函數(shù)都可以得到一個(gè)常規(guī)標(biāo)量變量中的元素個(gè)數(shù)逮诲,如果傳遞給該函數(shù)的數(shù)組是空數(shù)組帜平,則返回的數(shù)組元素個(gè)數(shù)為0。
    - array_count_values()函數(shù)
        - 該函數(shù)會(huì)統(tǒng)計(jì)每個(gè)特定的值在數(shù)組中出現(xiàn)過的次數(shù)梅鹦。
        - 該函數(shù)會(huì)統(tǒng)計(jì)數(shù)組(\$array)會(huì)返回一個(gè)關(guān)聯(lián)數(shù)組(\$array1)裆甩,該關(guān)聯(lián)數(shù)組( \$array1 )中的關(guān)鍵字(\$array1的key)就是該數(shù)組(\$array)中的值(\$array的value);而該關(guān)聯(lián)數(shù)組(\$array1)中關(guān)鍵字(\$array1的key)對(duì)應(yīng)的數(shù)值(\$array1的value)則是關(guān)鍵字(\$array1的key)在該數(shù)組($array)中出現(xiàn)的次數(shù)(頻率)齐唆。
        - ```
$array=array(4,5,1,2,3,4,1,2,3,5,5,2,3,4);
$ac=array_count_values($array);
print_r($ac);
    - ![該數(shù)組一共有3個(gè)4嗤栓,3個(gè)5,2個(gè)1,3個(gè)2茉帅,和3個(gè)3](http://upload-images.jianshu.io/upload_images/4167376-f5a60af4e2920186.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
  • extract()函數(shù)
    • extact(array var_array[, int extract_type][, string prefix]);
    • 該函數(shù)針對(duì)非數(shù)字索引數(shù)組叨叙,將數(shù)組轉(zhuǎn)換成標(biāo)量變量。
    • 該函數(shù)是創(chuàng)建一系列的標(biāo)量變量堪澎,這些變量的名稱必須是數(shù)組中關(guān)鍵字的名稱擂错,而變量值則是數(shù)組中的值。
      • $key 對(duì)應(yīng) $var樱蛤;$value對(duì)應(yīng)value钮呀。

$array=array('key1'=>'value1','key2'=>'value2','key3'=>'value3');
extract($array);`
echo "$key1 | $key2 | $key3;"

        - 
![Paste_Image.png](http://upload-images.jianshu.io/upload_images/4167376-75aaf0d75c17700d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

    - extract_type參數(shù)
        - 該函數(shù)將告訴extract()函數(shù)如何處理***關(guān)鍵字***沖突。
            - EXTR_OVERWRITE:如果有沖突刹悴,覆蓋已有的變量行楞。  
            - EXTR_SKIP:如果有沖突,不覆蓋已有的變量土匀。  
            - EXTR_PREFIX_SAME:如果有沖突子房,創(chuàng)建一個(gè)名為$prefix_key的變量。必須提供prefix參數(shù)就轧。  
            - EXTR_PREFIX_ALL:給所有變量名加上前綴 prefix证杭。必須提供prefix參數(shù)。
            - EXTR_PREFIX_INVALID:使用指定的prefix在可能無效的變量名稱錢加上前綴妒御。必須提供prefix參數(shù)解愤。
            - EXTR_IF_EXISTS:只提取已經(jīng)存在的變量(換句話說,就是用數(shù)組中的值覆蓋已有的變量值)乎莉。這個(gè)參數(shù)對(duì)于數(shù)組到變量的轉(zhuǎn)換石非常有用送讲。 
                - 舉個(gè)例子,以下情況非常有用:定義一些有效變量惋啃,然后從 $_REQUEST 中僅導(dǎo)入這些已定義的變量哼鬓。  
            - EXTR_PREFIX_IF_EXISTS:只在不帶前綴的變量已經(jīng)存在的情況下,創(chuàng)建帶有前綴的變量边灭,其它的都不處理异希。  
            - EXTR_REFS:將變量作為引用提取。這有力地表明了導(dǎo)入的變量仍然引用了 var_array 參數(shù)的值绒瘦〕撇荆可以單獨(dú)使用這個(gè)標(biāo)志或者在 extract_type 中用 OR 與其它任何標(biāo)志結(jié)合使用。  
            - 如果沒有指定 extract_type惰帽,則被假定為 EXTR_OVERWRITE憨降。 
        - ```
$key1="value4";`
    $array=array('key1'=>'value1','key2'=>'value2','key3'=>'value3');
    extract($array,EXTR_PREFIX_ALL,'my');
    echo "$my_key3|$my_key2|$key1|$my_key1";
    - ![輸出效果](http://upload-images.jianshu.io/upload_images/4167376-6c22c3f9c4b71638.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

- 以數(shù)字開始或包含空格的關(guān)鍵字將被跳過。

相關(guān)術(shù)語

1.語言結(jié)構(gòu)和函數(shù)
(1)相關(guān)概念

  • 語言結(jié)構(gòu):就是PHP語言的關(guān)鍵詞善茎,語言語法的一部分券册;它不可以被用戶定義或者添加到語言擴(kuò)展或者庫(kù)中;它可以有也可以沒有變量和返回值。
  • 函數(shù):由代碼塊組成的烁焙,可以復(fù)用航邢。從源碼的角度來說,也就是基于Zend引擎的基礎(chǔ)來實(shí)現(xiàn)的骄蝇,ext拓展庫(kù)中的函數(shù)都是這樣實(shí)現(xiàn)的膳殷。

(2)語言結(jié)構(gòu)為什么比函數(shù)快

  • 原因是在PHP中,函數(shù)都要先被PHP解析器(Zend引擎)分解成語言結(jié)構(gòu)九火,所以有此可見赚窃,函數(shù)比語言結(jié)構(gòu)多了一層解析器解析。這樣就能比較好的理解岔激,什么語言結(jié)構(gòu)比函數(shù)快了勒极。

(3)語言結(jié)構(gòu)和函數(shù)的不同

  • 語言結(jié)構(gòu)比對(duì)應(yīng)功能的函數(shù)快

  • 語言結(jié)構(gòu)在錯(cuò)誤處理上比較魯棒,由于是語言關(guān)鍵詞虑鼎,所以不具備再處理的環(huán)節(jié)

  • 語言結(jié)構(gòu)不能在配置項(xiàng)(php.ini)中禁用辱匿,函數(shù)則可以。

  • 語言結(jié)構(gòu)不能被用做回調(diào)函數(shù)

(4)語言結(jié)構(gòu)列表

  • echo()

  • print()

  • die()

  • isset()

  • unset()

  • include()炫彩,注意匾七,include_once()是函數(shù)

  • require(),注意江兢,require_once()是函數(shù)

  • array()

  • list()

  • empty()

2.相對(duì)引用的位置問題

  • 以引用圖片為例昨忆,如果需要引用的程序和被引用的圖片文件夾在平級(jí)則相對(duì)引用地址為./images/1.jpg;

bob_front+page.php和images文件夾平級(jí)
  • 如果被引用的圖片文件夾比引用的程序高一級(jí),則相對(duì)引用地址為../images/1.jpg;

images文件夾比bob_front+page.php高一級(jí)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末杉允,一起剝皮案震驚了整個(gè)濱河市邑贴,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌叔磷,老刑警劉巖痢缎,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異世澜,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)署穗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門寥裂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人案疲,你說我怎么就攤上這事封恰。” “怎么了褐啡?”我有些...
    開封第一講書人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵诺舔,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng)低飒,這世上最難降的妖魔是什么许昨? 我笑而不...
    開封第一講書人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮褥赊,結(jié)果婚禮上糕档,老公的妹妹穿的比我還像新娘。我一直安慰自己拌喉,他們只是感情好速那,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著尿背,像睡著了一般端仰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上田藐,一...
    開封第一講書人閱讀 51,737評(píng)論 1 305
  • 那天荔烧,我揣著相機(jī)與錄音,去河邊找鬼坞淮。 笑死茴晋,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的回窘。 我是一名探鬼主播诺擅,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼啡直!你這毒婦竟也來了烁涌?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤酒觅,失蹤者是張志新(化名)和其女友劉穎撮执,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體舷丹,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡抒钱,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了颜凯。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谋币。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖症概,靈堂內(nèi)的尸體忽然破棺而出蕾额,到底是詐尸還是另有隱情,我是刑警寧澤彼城,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布诅蝶,位于F島的核電站退个,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏调炬。R本人自食惡果不足惜语盈,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望筐眷。 院中可真熱鬧黎烈,春花似錦、人聲如沸匀谣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春娜氏,著一層夾襖步出監(jiān)牢的瞬間顽聂,已是汗流浹背烙丛。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工憎账, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人垫毙。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓霹疫,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親综芥。 傳聞我的和親對(duì)象是個(gè)殘疾皇子丽蝎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 1屠阻、基本內(nèi)容 range(low,high,[step]);函數(shù),創(chuàng)建一個(gè)包含指定范圍的元素的數(shù)組。參數(shù)step:...
    ManZb閱讀 339評(píng)論 0 0
  • php是一種服務(wù)器端解釋的腳本語言额各。 什么是PHPPHP是一種服務(wù)器端腳本語言国觉,他是專門為Web而設(shè)計(jì)的。 第一篇...
    vernwang閱讀 1,576評(píng)論 1 49
  • php usleep() 函數(shù)延遲代碼執(zhí)行若干微秒虾啦。 unpack() 函數(shù)從二進(jìn)制字符串對(duì)數(shù)據(jù)進(jìn)行解包麻诀。 uni...
    思?jí)鬚HP閱讀 1,984評(píng)論 1 24
  • PHP常用函數(shù)大全 usleep() 函數(shù)延遲代碼執(zhí)行若干微秒。 unpack() 函數(shù)從二進(jìn)制字符串對(duì)數(shù)據(jù)進(jìn)行解...
    上街買菜丶迷倒老太閱讀 1,370評(píng)論 0 20
  • 修行不在廟里傲醉,在家中修行不在經(jīng)文里针饥,在言談中 孤身,獨(dú)處是最佳苦行
    榴蓮喵閱讀 186評(píng)論 0 0