js 找出多維對象中的key值 原畫與動畫有什么區(qū)別?
原畫與動畫有什么區(qū)別?原畫是指動畫創(chuàng)作中一個場景動作開始和結(jié)束的畫面,以線稿的形式畫在紙上。陰影和分色的水平線也在這一步畫出。所以有人翻譯為kecharts使用詳解?支持?jǐn)?shù)據(jù)類型,包括二維表、鍵值和其
原畫與動畫有什么區(qū)別?
原畫是指動畫創(chuàng)作中一個場景動作開始和結(jié)束的畫面,以線稿的形式畫在紙上。陰影和分色的水平線也在這一步畫出。所以有人翻譯為k
echarts使用詳解?
支持?jǐn)?shù)據(jù)類型,包括二維表、鍵值和其他數(shù)據(jù)源。常見的鍵值格式數(shù)據(jù),比如json和HashMap,都是鍵值數(shù)據(jù)。...
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ù)都是通用的,特殊情況要隨機(jī)應(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))
執(zhí)行結(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)注。