[請益] 如何篩選array

看板PHP作者 (蔥頭)時間14年前 (2011/12/11 23:45), 編輯推噓1(1027)
留言28則, 10人參與, 最新討論串1/1
$static_reaction=array( '1'=>array('id'=>1001,'npc_id'=>1,'type'=>3), '2'=>array('id'=>1002,'npc_id'=>2,'type'=>4), '3'=>array('id'=>1003,'npc_id'=>3,'type'=>5), '4'=>array('id'=>1004,'npc_id'=>4,'type'=>5), ); 請問我可以透過value取得索引嗎?? 例如:我想找type=4的索引,print_r結果會是2或是把$static_reaction[2],print_r出來 例如:可以取出type=5的索引嗎,print_r結果會是3與4 -- 感謝大家的推文 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.167.203.99

12/11 23:57, , 1F
foreach if
12/11 23:57, 1F

12/11 23:57, , 2F
用迴圈跑判斷...?
12/11 23:57, 2F

12/12 00:07, , 3F
foreach($static_r as $v)
12/12 00:07, 3F

12/12 00:08, , 4F
if( $v[type] == 4 ) $result[]=$k;
12/12 00:08, 4F

12/12 00:08, , 5F
$result就是你要的東西
12/12 00:08, 5F

12/12 00:09, , 6F
啊...第一行改成foreach( .... as $k=>$v) 剛少打了 抱歉
12/12 00:09, 6F

12/12 07:45, , 7F
用迴圈好像很傷效能~
12/12 07:45, 7F

12/12 07:45, , 8F
沒有別種方法嗎?
12/12 07:45, 8F

12/12 08:43, , 9F
array_search
12/12 08:43, 9F

12/12 08:54, , 10F
效能先拋到腦後, 等到很慢再來慢慢最佳化
12/12 08:54, 10F

12/12 09:15, , 11F
直接用索引當陣列key不就好了
12/12 09:15, 11F

12/12 11:52, , 12F
現在機器很快,不用迷信「效能教」。
12/12 11:52, 12F

12/12 11:53, , 13F
除非你的script一秒會跑一萬或一百萬次
12/12 11:53, 13F

12/12 13:19, , 14F
如果你 array 很大,不想每次都掃一次,就在這個 array 變
12/12 13:19, 14F

12/12 13:20, , 15F
更的時候另外存成 array[type] = array(indexs); 的 array
12/12 13:20, 15F

12/12 13:20, , 16F
用原先的 array 跑 foreach 之後 var_export 存去另外
12/12 13:20, 16F

12/12 13:20, , 17F
一個檔案就好,然後比對這個檔案和產生的檔案的編輯時間
12/12 13:20, 17F

12/12 13:21, , 18F
簡單來說就是另外建 index。
12/12 13:21, 18F

12/13 01:53, , 19F
不知道你要用來做什麼,另一種解法就是存到資料庫再query
12/13 01:53, 19F

12/13 01:54, , 20F
出來,想省掉資料庫連線 資料又少,就暫存到access
12/13 01:54, 20F

12/13 01:54, , 21F
要說快這大概零點幾秒的時間而已...
12/13 01:54, 21F

12/13 01:56, , 22F
而且語法無腦至極XD
12/13 01:56, 22F

12/13 02:09, , 23F
key存成index 然後select index from xxx where type = 4
12/13 02:09, 23F

12/13 02:10, , 24F
foreach ($result as $k) {echo $k->index;}
12/13 02:10, 24F

12/13 02:12, , 25F
資料極少就用bibo大的 if沒幾次,次中就頂多io accse
12/13 02:12, 25F

12/13 02:13, , 26F
access
12/13 02:13, 26F

12/13 02:15, , 27F
moon大說的也是,沒人知道你的用途一次if幾萬筆資料
12/13 02:15, 27F

12/13 02:15, , 28F
然後每秒有幾千幾萬人會執行你這程式?
12/13 02:15, 28F
文章代碼(AID): #1EvD0Hbi (PHP)
文章代碼(AID): #1EvD0Hbi (PHP)