我已经编写了一段代码,如果在第一个数组中找到特定的键,则会在第二个数组中查找该键对应的值,但我的问题是 - 是否有更好的方法?例如,不使用3个循环?
例如,这里是要搜索的键和值,用户在表单中勾选并提交的($tegoszukamy):
以下是一个包含产品ID的数组,用于进行搜索操作($tuszukamy):
例如,这里是要搜索的键和值,用户在表单中勾选并提交的($tegoszukamy):
array (
'kolor' =>
array (
0 => 'bialy',
1 => 'zielony',
),
'rozmiar' =>
array (
0 => '60',
1 => '70',
),
'rozdzielczość' =>
array (
0 => '1200x1800',
),
'moc' =>
array (
0 => '500W',
),
);
以下是一个包含产品ID的数组,用于进行搜索操作($tuszukamy):
array (
47 =>
array (
'rozmiar' => '50,60,70,80,90,100',
'kolor' => 'bialy,czarny',
),
48 =>
array (
'rozmiar' => 'L,M,XS,S,L',
'kolor' => 'zielony,niebieski,czerwony,zolty,bialy,czarny',
),
49 =>
array (
'rozdzielczość' => '1200x1800',
'prędkość' => '60str/min',
)
)
以下是我的代码,它能正常运行:
foreach ($tegoszukamy as $atrybut=>$wartosci_szukane) {
foreach ($tuszukamy as $numer_posta=>$wartosci_zbioru ) {
if (array_key_exists($atrybut, $wartosci_zbioru) !== FALSE){
foreach ($wartosci_szukane as $ws) {
if (strpos($wartosci_zbioru[$atrybut],$ws) !== FALSE) {
echo
'We have found'
.$ws.
'in'
.$wartosci_zbioru[$atrybut].
'where product id is'
.$numer_posta.
''
;}
else {
echo
'We found not'
.$ws.
'in'
.$wartosci_zbioru[$atrybut].
''
;}
}
}
}
}
是否有可能通过改进代码性能/速度来更好地实现它,因为我不知道当用户筛选10000个产品时,这3个循环是否足够好。
array_key_exists
后面加上!== FALSE
是多余的。 - Dharman