在查看关于php数组的许多已经问过的问题后,我仍然无法解决我的问题。
我的目标是搜索数组以进行部分匹配,并将这些结果存储到新数组中。我正在使用的数据是国家信息,地区信息和城市信息。
我有3个SQL查询返回如下数据: [名称] [动作] [值] 阿姆斯特丹,城市,阿姆斯特丹 荷兰,国家,NL 荷兰,国家,NL
检索结果,然后使用
将其合并到一个数组中$smartsearcharray = array();
array_push($smartsearcharray, $results_countries);
array_push($smartsearcharray, $results_provinces);
array_push($smartsearcharray, $results_cities);
但阵列看起来像
Array
(
[0] => Array
(
[0] => Array
(
[name] => andorra
[action] => country
[value] => AD
)
[1] => Array
(
[name] => argentina
[action] => country
[value] => AR
)
[1] => Array
(
[0] => Array
(
[name] => canillo
[action] => province
[value] => AD-02
)
[1] => Array
(
[name] => andorra la vella
[action] => province
[value] => AD-07
)
尝试合并数组0和数组1,因为它们包含相同的结构,并且使用RecursiveIteratorIterator失败
我尝试使用strpos,preg_grep和组合递归地进行array_walk,但由于额外的数组维度,它们经常失败。
我应该使用哪些功能或技术建议才能使其正常工作?
非常感谢
/ edit:解决方案
$res_arr = array();
foreach($smartsearcharray as $item)
{
if(stripos($item['name'], $search_word) !== false) {
$res_arr[] = array(
'name' => $item['name'],
'action' => $item['action'],
'value' => $item['value']
);
}
}
print_r($res_arr);
答案 0 :(得分:0)
第1部分,通过数组合并而不是array_push
求解数组$results_countries = $this->model_search_smartsearch->buildCountries();
$results_provinces = $this->model_search_smartsearch->buildProvinces();
$results_cities = $this->model_search_smartsearch->buildCities();
$smartsearcharray = array();
$smartsearcharray = array_merge($results_countries, $results_provinces, $results_cities );
第2部分,搜索数组值,如果匹配则将信息存储在较小/新数组中
$res_arr = array();
foreach($smartsearcharray as $item)
{
if(stripos($item['name'], $search_word) !== false) {
$res_arr[] = array(
'name' => $item['name'],
'action' => $item['action'],
'value' => $item['value']
);
}
}
print_r($res_arr);