不完全确定我是否接近此最佳方式,可能不是。搜索2d数组以获得多个字符串的精确匹配
我有一个名为$ search的数组,其中包含元素'dog'和'cat'。我想搜索名为$ array的二维数组,并存储每行的第一个元素(它的数字),如果该行具有“狗”和“猫”的元素。我有这个至今:
//create 2d array
$array = array(
array(1, 'dog', 'cat','sup'),
array(2, 'dog', 'fish', 'cow'),
array(3, 'dog', 'cat'),
array(4, 'monkey', 'rabbit', 'king', 'fish', 'duck')
);
//create user search array
$search = array('dog', 'cat');
//create get results array:
$results = array();
//get rows with matches of user search and push to results array:
$rows = count($array);
for ($row = 0; $row < $rows; $row++) {
$cols = count($array[$row]);
for($col = 0; $col < $cols; $col++) {
for($i = 0; $i < $cols; $i++){
if($search[$i] == $array[$row][$col]){
//not sure what to do here...
array_push($results, $array[$row][0]);
//...
}
}
}
}
//check results
var_dump($results);
所以,我想只有这些行会被推到结果数组:
array(1, 'dog', 'cat','sup'),
array(3, 'dog', 'cat')
这将是这样的:
array (size=2)
0 => int 1
1 => int 3
这似乎运作良好。谢谢 ! – kaiwen
良好的逻辑..来了解不同之处b/w继续和打破 –
当搜索数组包含多次相同的项目时,此方法不起作用。 –