中實現簡單的php數組,php常用的數組函數

本文目錄一覽:

PHP中用hash實現的數組

PHP中使用最多的非Array莫屬了,那Array是如何實現的?在PHP內部Array通過一個hashtable來實現,其中使用鏈接法解決hash衝突的問題,這樣最壞情況下,查找Array元素的複雜度為O(N),最好則為1.

而其計算字元串hash值的方法如下,將源碼摘出來以供查備:

複製代碼

代碼如下:

static

inline

ulong

zend_inline_hash_func(const

char

*arKey,

uint

nKeyLength)

{

register

ulong

hash

=

5381;

//此處初始值的設置有什麼玄機么?

/*

variant

with

the

hash

unrolled

eight

times

*/

for

(;

nKeyLength

=

8;

nKeyLength

-=

8)

{

//這種step=8的方式是為何?

hash

=

((hash

5)

+

hash)

+

*arKey++;

hash

=

((hash

5)

+

hash)

+

*arKey++;

hash

=

((hash

5)

+

hash)

+

*arKey++;

hash

=

((hash

5)

+

hash)

+

*arKey++;

//比直接*33要快

hash

=

((hash

5)

+

hash)

+

*arKey++;

hash

=

((hash

5)

+

hash)

+

*arKey++;

hash

=

((hash

5)

+

hash)

+

*arKey++;

hash

=

((hash

5)

+

hash)

+

*arKey++;

}

switch

(nKeyLength)

{

case

7:

hash

=

((hash

5)

+

hash)

+

*arKey++;

/*

fallthrough…

*/

//此處是將剩餘的字元hash

case

6:

hash

=

((hash

5)

+

hash)

+

*arKey++;

/*

fallthrough…

*/

case

5:

hash

=

((hash

5)

+

hash)

+

*arKey++;

/*

fallthrough…

*/

case

4:

hash

=

((hash

5)

+

hash)

+

*arKey++;

/*

fallthrough…

*/

case

3:

hash

=

((hash

5)

+

hash)

+

*arKey++;

/*

fallthrough…

*/

case

2:

hash

=

((hash

5)

+

hash)

+

*arKey++;

/*

fallthrough…

*/

case

1:

hash

=

((hash

5)

+

hash)

+

*arKey++;

break;

case

0:

break;

EMPTY_SWITCH_DEFAULT_CASE()

}

return

hash;//返回hash值

}

ps:對於以下函數,仍有兩點不明:

hash

=

5381設置的理由?

這種step=8的循環方式是為了效率么?

php裡面怎麼新建數組?

php裡面新建數據可以通過兩種方式,一種是通過array函數來創建,另一種就是通過賦值[]來創建。

?php

$arr1 = array(1,2,3,4);

var_dump($arr1);

$arr2[0] = 1;

$arr2[1] = 2;

$arr2[2] = 3;

$arr2[3] = 4;

var_dump($arr2);

php 如何定義一個數組

php中定義數組的方法:

1、PHP定義數組的格式:

數組名=array();

如:$aa=array();//這樣就定義了一個數組,

之後給元素賦值:

$aa[0]=”9016″;

$aa[1]=”9017″;

$aa[2]=”9018″;

2、PHP輸出數組的方法:

foreach($aa as $val)

{

echo$val;

}

也可以在定義數組時直接賦值

$aa=array(0=”9016″,1=”9017″;2=”9018″);

3、PHP的數組還可以用字元做下標,不一定要數字:

$aa[“name”]=”Joan”;

$aa[“num”]=”9018″;

$aa[“email”]=”abc@abc.com”;

也可以這樣

$aa=array(“name”=”joan”,”num”=”9018″,”email”=”abc@abc.com”);

將一個一維數組的元素也定義為數組,就是一個二維數組,

$aa=array(0=”a1″,1=”a2″);

$bb=array(0=”b1″,1=”b2″);

$cc=array(0=$aa;1=$bb);此時,$cc[0]也是一個數組,$cc[1]也是一個數組,$cc就是一個二維數組。

同理,三維,四維數組也可以繼續定義下去。

4、數組的元素不僅於數字和字元串,可以是類的對象。

原創文章,作者:YWFA,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/140718.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
YWFA的頭像YWFA
上一篇 2024-10-04 00:24
下一篇 2024-10-04 00:24

相關推薦

  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python中capitalize函數的使用

    在Python的字元串操作中,capitalize函數常常被用到,這個函數可以使字元串中的第一個單詞首字母大寫,其餘字母小寫。在本文中,我們將從以下幾個方面對capitalize函…

    編程 2025-04-29
  • Python中set函數的作用

    Python中set函數是一個有用的數據類型,可以被用於許多編程場景中。在這篇文章中,我們將學習Python中set函數的多個方面,從而深入了解這個函數在Python中的用途。 一…

    編程 2025-04-29
  • Python導入數組

    本文將為您詳細闡述Python導入數組的方法、優勢、適用場景等方面,並附上代碼示例。 一、numpy庫的使用 numpy是Python中一個強大的數學庫,其中提供了非常豐富的數學函…

    編程 2025-04-29
  • 三角函數用英語怎麼說

    三角函數,即三角比函數,是指在一個銳角三角形中某一角的對邊、鄰邊之比。在數學中,三角函數包括正弦、餘弦、正切等,它們在數學、物理、工程和計算機等領域都得到了廣泛的應用。 一、正弦函…

    編程 2025-04-29
  • 單片機列印函數

    單片機列印是指通過串口或並口將一些數據列印到終端設備上。在單片機應用中,列印非常重要。正確的列印數據可以讓我們知道單片機運行的狀態,方便我們進行調試;錯誤的列印數據可以幫助我們快速…

    編程 2025-04-29
  • Python 常用資料庫有哪些?

    在Python編程中,資料庫是不可或缺的一部分。隨著互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的資料庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • Python返回數組:一次性搞定多種數據類型

    Python是一種多用途的高級編程語言,具有高效性和易讀性的特點,因此被廣泛應用於數據科學、機器學習、Web開發、遊戲開發等各個領域。其中,Python返回數組也是一項非常強大的功…

    編程 2025-04-29
  • Python3定義函數參數類型

    Python是一門動態類型語言,不需要在定義變數時顯示的指定變數類型,但是Python3中提供了函數參數類型的聲明功能,在函數定義時明確定義參數類型。在函數的形參後面加上冒號(:)…

    編程 2025-04-29
  • Python簡單數學計算

    本文將從多個方面介紹Python的簡單數學計算,包括基礎運算符、函數、庫以及實際應用場景。 一、基礎運算符 Python提供了基礎的算術運算符,包括加(+)、減(-)、乘(*)、除…

    編程 2025-04-29

發表回復

登錄後才能評論