我有一個工作腳本,但我確信我的數組管理方法可能會更好。我搜索了一個解決方案,但沒有找到解決方案,但我確信我應該使用關聯數組的功能來更高效地完成任務。PHP - 從多維數組中檢索值
我有兩個數組,一個來自CSV文件,另一個來自數據庫。我已經將CSV數組創建爲數字,將DB數組創建爲關聯(儘管我知道差異在PHP中是模糊的)。
我正試圖在DB數組中找到一個記錄,其中一個字段中的值與CSV數組中的值匹配。兩個陣列都是多維的。
在每個陣列的每個記錄中都有一個參考號。它在CSV數組中出現一次,並可能出現在DB數組中。如果有,我需要採取行動。
我目前這樣做(簡化):
$CSVarray:
('reference01', 'blue', 'small'),
('reference02', 'red', 'large'),
('reference03', 'pink', 'medium')
$Dbarray:
(0 => array(ref=>'reference01',name=>"tom",type=>"mouse"),
(1 => array(ref=>'reference02',name=>"jerry",type=>"cat"),
(2 => array(ref=>'reference03',name=>"butch",type=>"dog"),
foreach ($CSVarray as $CSVrecord) {
foreach ($Dbarray as $DBrecord) {
if ($CSVarray[$numerickey] == $DBrecord['key'] {
do something with the various values in the $DBrecord
}
}
}
這是可怕的,因爲陣列是每千行。
我不只是想知道匹配值是否存在,我想從匹配的記錄中檢索數據,所以像'array_search'這樣的函數不會做我想做的事情,array_walk似乎並不比我更好目前的做法。
我真正需要的是這樣的(廢話代碼):
foreach ($CSVarray as $CSVrecord) {
WHERE $Dbarray['key']['key'] == $CSVrecord[$numerickey] {
do something with the other values in $Dbarray['key']
}
}
我正在尋找一種方式來匹配使用鍵(數字或聯想),而不是走在數組中的值。任何人都可以提供任何幫助嗎?
你試過in_array()? – Matt 2012-07-26 15:31:48
不in_array()只是搜索值嗎?當找到值時我需要採取行動,並且我沒有看到in_array()引用它找到的記錄的方法。我錯過了什麼嗎? – 2012-07-26 15:42:32
嘗試array_walk_recursive函數。 – MilMike 2012-07-26 15:43:49