目前我有這樣的:PHP數組排序assoc命令鍵後交叉鍵
$pattern = array('industry_id','category_id','subcategory_id');
$data = array('advert_id' => string '261501' (length=6)
'advert_type_id' => string '7' (length=1)
'user_id' => string '6221' (length=4)
'industry_id' => string '17' (length=2)
'category_id' => string '769' (length=3)
'subcategory_id' => string '868' (length=3)
'model' => string 'Custom Semi Drop Deck Trailer' (length=29)
'description' => string 'Industry: Trailer);
然後:
array_intersect_key( $data , array_flip($pattern));
使用array_interect_key
& array_flip
從$data
獲取值基於$pattern
,我會得到一個結果如下:
array (size=3)
'category_id' => string '769' (length=3)
'subcategory_id' => string '930' (length=3)
'industry_id' => string '17' (length=2)
不幸的是,你可以看到結果鍵排序與我在$pattern
中聲明的不同。有沒有簡單的方法來排序它,就像我在$pattern
中聲明的那樣,因爲在此之後,我想破壞數組並在沒有對密鑰進行硬編碼的情況下執行類似industry_id.category_id.subcategory_id
的操作。
如果我沒有記錯_array_filter_方法將做比賽你可以做到這一點的另一種方式,並保存密鑰,但爲了原始的$ data數組,這不是他想要的。他希望_(如果我理解正確)_結果數組具有與$ pattern相同的鍵順序。一個簡單的方法用簡單的循環檢查我的答案。 –
@IvanVeštićarray_filter按順序遍歷數據,因此無論模式的順序如何,它總是會按照原始數據的順序返回。這就是說,我也用OP的方法得到了正確的結果。你的循環也可以工作,這是我的首選問題(雖然我沒有比較處理速度) – dops
@IvanVeštić對不起,只是看着它,我沒有讀你正確的評論,OP有他們的模式在順序的原始數據。我想他們想要按照原來的順序。 – dops