【发布时间】:2015-06-24 17:26:43
【问题描述】:
Array1 是一个关联数组,包含从 MySQL 获取的多个列表,而 Array2 是一个数值数组,即简单数组。 Array2有list_ids,用来过滤Array1。
Array1 的样本:
Array (
[0] => Array (
[id] => 1
[list_id] => 68
[list_value] => List-68
[subject] => "abc"
[message] => "abc"
[obj_var] => "abc"
[url_link] => "abc"
[list_time] => 2014-05-13 22:04:04
)
[1] => Array (
[id] => 2
[list_id] => 69
[list_value] => List-69
[subject] => "abc"
[message] => "abc"
[obj_var] => "abc"
[url_link] => "abc"
[list_time] => 2014-05-13 22:04:04
)
[2] => Array (
[id] => 3
[list_id] => 80
[list_value] => List-80
[subject] => "abc"
[message] => "abc"
[obj_var] => "abc"
[url_link] => "abc"
[list_time] => 2014-05-13 22:04:04
)
[3] => Array (
[id] => 4
[list_id] => 81
[list_value] => List-81
[subject] => "abc"
[message] => "abc"
[obj_var] => "abc"
[url_link] => "abc"
[list_time] => 2014-05-13 22:04:04
)
)
数组2:
[68, 81]
我的输出应该是:
Array (
[0] => Array (
[id] => 2
[list_id] => 69
[list_value] => List-69
[subject] => "abc"
[message] => "abc"
[obj_var] => "abc"
[url_link] => "abc"
[list_time] => 2014-05-13 22:04:04
)
[1] => Array (
[id] => 3
[list_id] => 80
[list_value] => List-80
[subject] => "abc"
[message] => "abc"
[obj_var] => "abc"
[url_link] => "abc"
[list_time] => 2014-05-13 22:04:04
)
)
所以,在正常情况下array_diff() 会这样做,但在这里它不会起作用。我尝试将数值 Array2 转换为关联并使用 array_diff_assoc() 函数,但仍然不起作用。
我还尝试遍历我的数值数组并检查关联 Array1 中的每个元素(即从 MySQL 获取的每个行)以查找数值数组中的每个数字。
foreach ($list as $val) {
while ( $r = mysqli_fetch_assoc($result)) {
echo $val."<br/>";
if($r['list_id'] != $val ) {
$new[] = $r;
}
}
}
print_r($new);
但输出仅回显数字 Array1 的第一个数字 4 次(Array1 的长度),因此只有一个 list_id 从关联 Array2 中删除,而不是 2:
68
68
68
68
Array (
[0] => Array (
[id] => 2
[list_id] => 69
[list_value] => List-69
[subject] => "abc"
[message] => "abc"
[obj_var] => "abc"
[url_link] => "abc"
[list_time] => 2014-05-13 22:04:04
)
[1] => Array (
[id] => 3
[list_id] => 80
[list_value] => List-80
[subject] => "abc"
[message] => "abc"
[obj_var] => "abc"
[url_link] => "abc"
[list_time] => 2014-05-13 22:04:04
)
[2] => Array (
[id] => 4
[list_id] => 81
[list_value] => List-81
[subject] => "abc"
[message] => "abc"
[obj_var] => "abc"
[url_link] => "abc"
[list_time] => 2014-05-13 22:04:04
)
)
那么,我怎样才能让它工作呢?最佳算法是什么?
【问题讨论】:
标签: php mysql arrays multidimensional-array