導航:首頁 > 編程語言 > phphash數組

phphash數組

發布時間:2022-06-10 05:46:43

1. php的數組java如何實現

HashMap啊。
不過PHP裡面的key是天生帶hash的,java的key的hash方程有的要根據hash的規則來自定義。

2. php語言 $arr=array(5 =>1, 12=>2)是什麼意思

php中數組中的元素分為兩個部分,一個是鍵,也就是key,一個是值,也就是value。
$arr[key]=value.換成你給的數組就是:
$arr[5]=1;$arr[12]=2.
比如:
$a=array(1,2,3,4);數組a中,只賦給了值,分別是1,2,3,4。其實,他默認的還在每個值前有一個鍵,只是沒有顯示。默認的是從0開始,比如上面的數組,他們的鍵分別是:0,1,2,3。
用戶可以給這些值賦鍵,也就是用戶手動給他添加鍵。而鍵的內容用戶自定。可以是數字也可以是字元。比如:
$a=array("ab"=>1,"c"=>bb);
這樣,數組a就可以寫成:
$a[ab]=1;$a[c]=bb.
方括弧中的是鍵,等號後的事值。這樣就可以標記數組中的不同值,不會因為數組中有多個值而沒有辦法出去其中的一個值,只要提供鍵,就可以取出對應的值了。
你所提供的數組,名稱叫做arr,他其中記錄了兩個值,分別為1和2。而1和2所對應的鍵分別為5和12。鍵其實就是個標記,來記錄數組中值存放的位置。

3. 刪除數組元素實用的PHP數組函數

/**
*
從數組中刪除空白的元素(包括只有空白字元的元素)
*
*
@param
array
$arr
*
@param
boolean
$trim
*/
復制代碼
代碼如下:
function
array_remove_empty(&
$arr,
$trim
=
true)
{
foreach
($arr
as
$key
=>
$value)
{
if
(is_array($value))
{
array_remove_empty($arr[$key]);
}
else
{
$value
=
trim($value);
if
($value
==
'')
{
unset($arr[$key]);
}
elseif
($trim)
{
$arr[$key]
=
$value;
}
}
}
}
/**
*
將一個二維數組轉換為
hashmap
*
*
如果省略
$valueField
參數,則轉換結果每一項為包含該項所有數據的數組。
*
*
@param
array
$arr
*
@param
string
$keyField
*
@param
string
$valueField
*
*
@return
array
*/
復制代碼
代碼如下:
function
array_to_hashmap(&
$arr,
$keyField,
$valueField
=
null)
{
$ret
=
array();
if($valueField)
{
foreach
($arr
as
$row)
{
$ret[$row[$keyField]]
=
$row[$valueField];
}
}
else
{
foreach($arr
as
$row)
{
$ret[$row[$keyField]]
=
$row;
}
}
return
$ret;
}

4. PHP中數組在內存的機制

php的數組是一個hashmap類似的結構

5. PHP的數組底層是怎麼實現的

PHP之所以發現這么迅速,有很大原因是因為數組數據非常好處理,而且它可以存儲其他類型的數據
數組的值存儲在zvalue_value.ht欄位中,ht是一個HashTable的數據
有關於HashTable的知識請移步 >> HASH表和變數
我們來詳細說一下數組
PHP裡面所有的數據都離不開zval和HashTable,
一個PHP很簡單的數組初始化,
在C語言裡面實現的卻沒有那麼簡單.
經過簡單分析,找到數組的初始化的opcode

6. 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的循環方式是為了效率么?

7. PHP如何取得數組的上標和下標

獲取下標:$array=array('a'=>1,'b'=>3,'c'=>4);$a=array_keys($array);echo end($a)。

PHP的加密函數有crypt()、 md5() 和sha1() 這3種, 其中crypt() 用於單向加密, 所謂的單向加密就是將需要加密的內容進行加密之後, 無法將密文轉換成為可讀的內容。

因此單向加密的應用范圍較狹窄, 一般用於用戶名認證和密碼輸入等情況; 當用戶進入系統時,只需要將密文口令輸 入,經過系統驗證與存儲的口令一致, 即可通過。

(7)phphash數組擴展閱讀:

主要特點:

(一)開源性和免費性

由於PHP的解釋器的源代碼是公開的,所以安全系數較高的網站可以自己更改PHP的解釋程序。另外,PHP 運行環境的使用也是免費的。

(二)快捷性

PHP是一種非常容易學習和使用的一門語言,它的語法特點類似於C語言,但又沒有C語言復雜的地址操作,而且又加入了面向對象的概念,再加上它具有簡潔的語法規則,使得它操作編輯非常簡單,實用性很強。

(三)資料庫連接的廣泛性

PHP可以與很多主流的資料庫建立起連接,如MySQL、ODBC、Oracle等,PHP是利用編譯的不同函數與這些資料庫建立起連接的,PHPLIB就是常用的為一般事務提供的基庫。

8. 用java,怎麼把php數組轉換成HashMap或者集合

public class Test
{
public static void main(String[] args)
{
List<HashMap<String, Object>> list = new ArrayList<HashMap<String,Object>>();
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("url", "abc");
map.put("alt","123");
list.add(map);

HashMap<String, Object> map1 = new HashMap<String, Object>();
map1.put("url", "bcd");
map1.put("alt", "234");
list.add(map1);

HashMap<String, Object> map2 = new HashMap<String, Object>();
map2.put("url", "cde");
map2.put("alt", "345");
list.add(map2);
for(HashMap<String, Object> lists : list)
{
System.out.println(lists);
}
}
}
結果:
{alt=123, url=abc}
{alt=234, url=bcd}
{alt=345, url=cde}

9. 比較PHP與Perl的array和hash

沒有本質區別,PERL只是語法上要求使用@和%區分兩種類型,PHP用數組一個概念來實現。

10. php如何定義一個常量數組

<?php
constARR=['a','b'];
var_mp(ARR);

php版本要>=5.6才能使用,如果是5.6以下版本可以考慮把數組序列化後賦值給常量

閱讀全文

與phphash數組相關的資料

熱點內容
什麼app就能知道自己的臉型 瀏覽:383
准了app月卡可以看什麼 瀏覽:139
雲伺服器開機要開30秒 瀏覽:646
php數組傳遞給js 瀏覽:639
在世紀的轉折點上pdf 瀏覽:857
變頻製冷壓縮機性能實驗 瀏覽:574
印刷哪個app好 瀏覽:366
安卓手機如何查看連接過的wifi密碼 瀏覽:460
chrpythonord 瀏覽:353
android切片 瀏覽:230
前端js調用php 瀏覽:591
文件夾res是什麼 瀏覽:488
linuxput命令 瀏覽:932
智能仿生演算法模擬退火 瀏覽:903
汽車辦解壓能代辦嗎 瀏覽:13
美林程序員 瀏覽:841
安卓如何開網路 瀏覽:731
宿來app什麼時候上線 瀏覽:765
成都python培訓機構好不好 瀏覽:422
mysql查看配置命令 瀏覽:597