php 給數(shù)組添加鍵值 php處理二維數(shù)組的方法是什么?
php處理二維數(shù)組的方法是什么?傻小子,一維怎么處理就是二維怎么處理。一維數(shù)組用的是for loop或者foreach,所以二維是一套for bai(雖然這樣會慢一點,怎么能更快需要根據(jù)實際情況來考慮
php處理二維數(shù)組的方法是什么?
傻小子,一維怎么處理就是二維怎么處理。一維數(shù)組用的是for loop或者foreach,所以二維是一套for bai(雖然這樣會慢一點,怎么能更快需要根據(jù)實際情況來考慮),所以代碼就不用多說了:
var arr [
【張三,21歲,實習(xí)生】,
[李四,25歲,工程師],
[王武,31歲,項目經(jīng)理]
]
for(var i 0 i lt arr.length i ){
for(var j 0 j lt arr[i].長度j ){
console.log(arr[i][j])
}
}
看看結(jié)果:
(其實這是js的Demo。我覺得寫js控制臺比PHP echo更方便,實現(xiàn)思路其實是一樣的。)
PHP多維數(shù)組根據(jù)值搜索對應(yīng)的鍵,你一般用什么辦法?
簡介我們已經(jīng)解釋了很多PHP數(shù)組操作的參考場景。今天,我們將分享這些知識,并討論如何按值搜索并返回多維數(shù)組的索引值。
在學(xué)習(xí)時間的初期,我們習(xí)慣按照自己的本能去寫代碼,下意識的開始使用for循環(huán)來遍歷數(shù)組,然后一個一個的比較。如果值相等,我們將返回索引值。如果不匹配,就不存在。
如果原始數(shù)組是如下所示的關(guān)聯(lián)數(shù)組。
程序邏輯非常簡單。讓 讓我們用代碼來實現(xiàn)它:
函數(shù)searchForId($id,$ array){ foreach($ array as $ key gt $ val){ if($ val[uid]$ id){ return $ key } }返回null }
這個函數(shù)接收一個值和一個數(shù)組,如果匹配就返回數(shù)組的索引,如果不存在就返回null。因為第一級結(jié)構(gòu)沒有手動指定索引值,所以它默認(rèn)為從0開始的數(shù)字索引。
它是這樣工作的:
$id searchForId(100,$userdb)
執(zhí)行之后,輸出應(yīng)該是0。
當(dāng)然,上面寫的函數(shù)都是通用的,特殊情況要隨機應(yīng)變。對于上面提到的$userdb關(guān)聯(lián)數(shù)組的結(jié)構(gòu),用PHP的內(nèi)置函數(shù)來操作顯然更直觀更快捷。
我們只需要先取出uid列的所有元素,因為上層結(jié)構(gòu)是默認(rèn)的數(shù)值索引,所以這里不需要手動指定索引值;然后,在提取的數(shù)組中搜索值,并使用array_search執(zhí)行return鍵。
總結(jié)成代碼,就一行:
$key array_search(100,array_column($userdb,uid))
保持行結(jié)果與上面的searchForId函數(shù)一致。
深入討論上面的函數(shù)和第二種解決方案會有一個問題,就是只返回第一個匹配的鍵。你這樣寫,肯定沒問題:
$key array_search(40489,array_column($userdb,uid))
但是如果數(shù)組中有重復(fù)值,uid列不是唯一的,該怎么做才能返回所有匹配的結(jié)果呢?你贏了。;你不必再修改searchForId函數(shù)了,是嗎?
事實上,你沒有。;不需要。PHP提供了這樣一個函數(shù),用array_keys函數(shù)代替就可以了:
$ keys array _ keys(array _ column $ userdb,uid),40489
您必須經(jīng)常使用array_keys函數(shù)來返回整個數(shù)組的鍵,但是它的第二個參數(shù)(如果指定的話)有一個可搜索的函數(shù)。這真的有點不得人心。
更進(jìn)一步。
上面返回的是數(shù)組對應(yīng)的鍵,那么如果想把鍵和值一起返回,一行代碼可以嗎?可以,修改一下就可以了。使用array_combine函數(shù)組合鍵和值并返回它們:
$ keys array _ keys(array _ combine(array _ keys($ userdb),array_column($us:_)
我是@程序員 的助手,我繼續(xù)分享我的編程知識。歡迎關(guān)注。