我有一个工作脚本,但我确信我管理数组的方法可能会更好。我一直在寻找解决方案,但没有找到,但我确信我应该使用关联数组的功能来更有效地做事。
我有两个数组,一个来自 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']
}
}
我正在寻找一种使用键(数字或关联)而不是遍历数组来匹配值的方法。任何人都可以提供任何帮助吗?