1. 程式人生 > >PHP陣列詳解

PHP陣列詳解

作為一名C++程式設計師,在轉做PHP開發的過程中,對PHP陣列產生了一些混淆,與C++陣列有相似的地方,也有一些不同,下面就全面地分析一下PHP的陣列及其與C++中相應資料型別的區別和聯絡。

陣列的分類:

1、數值陣列:也叫索引陣列,即以數字(從0 開始)作為陣列下標。相當於C++中的vector。

2、關聯陣列:以字串作為陣列下標。相當於C++中的map。

3、多維陣列:陣列中每個元素也是一個數組。其子陣列中的每個元素也可以是陣列。

陣列的宣告:

1、數值陣列

a、如下例子中,會自動分配數字ID鍵。  
$names = array("Peter","Joe","Lily");  
b、如下例子中,我們人工分配數字ID鍵。  
$names[0] = "Peter"; $names[1] = "Joe"; $names[2] = "Lily"; 可以在指令碼中使用這些ID鍵: <?php $names[0] = "Peter"; $names[1] = "Joe"; $names[2] = "Lily"; echo $names[0]." and ".$names[1]." are ".$names[2]."'s neighbors"; /* 何問起 hovertree.com */ ?>

2、關聯陣列:

例子1  
$ages = array("Peter"=>32, "Joe"=>30, "Lily"=>28); 例子2 本例與例子1相同,只是另一種建立陣列的方法。 $ages["Peter"] = "32"; $ages["Joe"] = "30"; $ages["Lily"] = "28"; 在指令碼中使用關聯陣列: <?php $ages["Peter"] = "32"; $ages["Joe"] = "30"; $ages["Lily"] = "28"; echo "Peter is ".$ages
["Peter"]." years old."; /* 何問起 hovertree.com */ ?> 以上指令碼輸出: Peter is 32 years old.

3、多維陣列:

在本例中,我們建立了一個帶有自動分配數字ID鍵的多維陣列:  
$families = array  
{  
    "Griffin"=>array  
    {  
        "Peter",  
        "Lois",  
        "Megan"  
    },  
    "Quagmire"=>array  
    {  
        "Glenn"  
    },  
    "Brown"=>array  
    {  
        "Cleveland",  
        "Loretta",  
        "Junior"  
    }  
};  
echo "Is " . $families['Griffin'][2] . " a part of the Griffin family?";  
以上程式碼輸出:  
Is Megan a part of the Griffin family?  

陣列遍歷

1、for迴圈遍歷  
for迴圈只能遍歷索引陣列。  
<?php  
    $names = array("Peter","Joe","Lily");  
    for($id=0;$id<count($names);++$id)  
    {  
        echo $names[$id];  
    }  
?>  
2、foreach遍歷  
即可以遍歷索引陣列,也可以遍歷關聯陣列  
遍歷索引陣列  
foreach(array_expression as $value)  
{  
    迴圈體;  
}  
遍歷關聯陣列  
foreach(array_expression as $key=>$value)  
{  
    迴圈體;  
}  
  
A、一維陣列遍歷  
索引陣列  
<?php  
    $contact = array("李某","xx公司","[email protected]");  
    foreach($contact as $value)  
    {  
        echo $value;  
    }  
?>  
  
<?php  
    $contact = array("姓名"=>"李某","公司"=>"xx公司","郵箱"=>"[email protected]");  
    foreach($contact as $key=>$value)  
    {  
        echo $key.":".$value;  
    }  
?>  
  
B、多維陣列遍歷  
<?php  
    $wage = array(  
        "市場部"=array(  
            array(1,"李某","市場經理",8000),  
            array(2,"王某","市場專員",5000),  
            array(3,"劉某","市場專員",7000)  
        ),  
        "產品部"=array(  
            array(1,"李某","產品經理",9000),  
            array(2,"王某","產品專員",6000),  
            array(3,"劉某","產品專員",5000)  
        ),  
        "賬務部"=array(  
            array(1,"李某","賬務經理",7000),  
            array(2,"王某","賬務專員",6000),  
            array(3,"劉某","賬務專員",5000)  
        )  
    );  
      
    foreach($wage as $section=>$table)  
    {  
        echo $section."部門人員如下";  
        foreach($table as $row)  
        {  
            foreach($row as $value)  
            {  
                echo $value;  
            }  
        }  
    }  /* 何問起 hovertree.com */
?>  

相關推薦

PHP陣列

作為一名C++程式設計師,在轉做PHP開發的過程中,對PHP陣列產生了一些混淆,與C++陣列有相似的地方,也有一些不同,下面就全面地分析一下PHP的陣列及其與C++中相應資料型別的區別和聯絡。 陣列的分類: 1、數值陣列:也叫索引陣列,即以數字(從0 開始)作為陣列下標。相當於C++中的vector。

PHP $_SERVER

自己 document 目錄 端口 tps 方法 規範 face interface $_SERVER[‘HTTP_ACCEPT_LANGUAGE‘]//瀏覽器語言 $_SERVER[‘REMOTE_ADDR‘] //當前用戶 IP 。 $_SERVER[‘REMOTE_H

php 引用

1 什麼是引用? 在 PHP 中引用意味著用不同的名字訪問同一個變數內容。這並不像 C 的指標:例如你不能對他們做指標運算,他們並不是實際的記憶體地址...... 檢視引用不是什麼瞭解更多資訊。 替代的是,引用是符號表別名。 注意在PHP 中,變數名和變數內容是不一樣的, 因此同樣的內容可以有不同的名字。

C/C++陣列(一維和二維)

陣列這東西,說說都懂,但是似乎並沒有完全吃透,導致很多地方有疑惑。所以再梳理一遍。   陣列定義 陣列是存放型別相同的物件的容器,這些物件本身沒有名字,需要通過其所在位置訪問。 從定義中可以看出,陣列存放的是物件且型別相同。所以不存在引用的物件(引用不是物件)

php知識點

1、cookie session     http協議是無狀態的;session依賴於cookie,session用session.save_path指定路徑,共用一個檔案 2.http1和http2區別     1、header頭壓縮

JS之陣列

1、什麼是陣列? 陣列就是一組資料的集合; 其表現形式就是記憶體中的一段連續的記憶體地址; 陣列名稱其實就是連續記憶體地址的首地址。 2、陣列特點? 陣列定義時無需指定資料型別; 陣列定義時可以無需指定陣列長度; 陣列可以儲存任何資料型別的資料(比

KMP演算法--Next陣列與優化

本篇文章直接跳過蠻力演算法以及一些簡單背景,著重討論Next陣列的意義以及其是如何工作的,並對如何求Next陣列做詳細記錄。 1.背景 1.1 KMP演算法的應用:KMP演算法用來解決模式串匹配問題。 1.2 為什麼要用KMP演算法:普通的蠻力演算法時間複雜度為O(n*

php 緩衝區(入門)ob_start()

在ob_start()和ob_get_contents()或ob_get_clean()中間輸出的內容,可以通過ob_get_contents()或ob_get_clean()取出輸出內容,最後記得使用ob_end_clean() 清空緩衝區 例子1: <?php  ob

“全棧2019”Java第二十八章:陣列(上篇)

難度 初級 學習時間 10分鐘 適合人群 零基礎 開發語言 Java 開發環境 JDK v11 IntelliJ IDEA v2018.3 文章原文連結 “全棧2019”Java第二十八章:陣列詳解(上篇) 下一章 “全棧2019”Java第二十九章:陣列詳解(中篇)

“全棧2019”Java第三十一章:二維陣列和多維陣列

難度 初級 學習時間 10分鐘 適合人群 零基礎 開發語言 Java 開發環境 JDK v11 IntelliJ IDEA v2018.3 文章原文連結 “全棧2019”Java第三十一章:二維陣列和多維陣列詳解 下一章 “全棧2019”Java第三十二章:增強for迴

“全棧2019”Java第三十章:陣列(下篇)

難度 初級 學習時間 10分鐘 適合人群 零基礎 開發語言 Java 開發環境 JDK v11 IntelliJ IDEA v2018.3 文章原文連結 “全棧2019”Java第三十章:陣列詳解(下篇) 下一章 “全棧

“全棧2019”Java第二十九章:陣列(中篇)

難度 初級 學習時間 10分鐘 適合人群 零基礎 開發語言 Java 開發環境 JDK v11 IntelliJ IDEA v2018.3 文章原文連結 “全棧2019”Java第二十九章:陣列詳解(中篇) 下一章 “全

php opcache

PHP效能提升之OPcache相關引數詳解 工具 memory 釋出於December 15, 2016 標籤: PHP OPcache 通過將 PHP 指令碼預編譯的位元組碼儲存到共享記憶體中來提升 PHP 的效能, 儲存預編譯位元組碼的好處就是 省去

Java陣列

陣列:陣列是相同型別資料的有序集合。陣列描述的是相同型別的若干個資料,按照一定的先後次序順序排列組合而成。其中,每一個數據作一個元素,每個元素可以通過一個索引(下標)來訪問他們。 陣列變數屬引用型別,陣列也可以看成是物件,陣列中的每個元素相當於該物件的成員變數 陣列基

PHP Socket和推送應用技術

對TCP/IP、UDP、Socket程式設計這些詞你不會很陌生吧?隨著網路技術的發展,這些詞充斥著我們的耳朵。那麼我想問: 1.         什麼是TCP/IP、UDP? 2.  &nb

PHP-FastCGI

一、什麼是 FastCGI FastCGI是一個可伸縮地、高速地在HTTP server和動態指令碼語言間通訊的介面。多數流行的HTTP server都支援FastCGI,包括Apache、Nginx和lighttpd等,同時,FastCGI也被許多指令碼語言所支援,其中就

字尾陣列

字尾陣列學習筆記【詳解】 老天,一個字尾陣列不知道看了多少天,最後終於還是看懂了啊! 最關鍵的就是一會兒下標表示排名,一會用數值表示排名繞死人了。 我不知道手跑了多少次才明白過來。其實我也建議初學者手跑幾遍,但是一定要注意陣列的意義,否則就是無用功。 陣列含義:

字尾陣列+模板

字尾陣列 注 SA[] 第幾名是誰 字尾陣列:字尾陣列 SA 是一個一維陣列, 它儲存 1..n 的某個排列 SA[1] ,SA[2],……,SA[n],並且保證 Suffix(SA[i]) < Suffix(SA[i+1]),1≤i<n 。也就是將 S 的 n

CentOS7.X安裝LMMP環境Nginx+PHP+Mysql

前言: 作為PHP開發者,我們常用的線上環境就是LNMP,合理的搭建也是必須掌握的技能,下面就利用原始碼的方式詳細介紹下LNMP環境Nginx+PHP+Mysql的詳細搭建步驟: 版本說明: Nginx:nginx-1.14.1(最新版本) PHP:php-7.2.12(最新版本) Mysql:my

指標陣列陣列指標、函式指標、函式指標陣列

總結指標和陣列部分的相關知識自己寫的一遍部落格:指標是變數單元的地址,地址指向該變數單元,因此地址形象的稱為“指標”,通過指標(地址)可以找到記憶體單元。  (總結)1.指標是存放地址才出現的,地址是為