上面的是一个数组 然后下面的是个二维数组 根据上面排序的方式 排序下面的 有什么好的解决方法?
千里码群里问了又到这来?
话说下次能贴数组的json数据吗? 放个github也行啊
demo:https://3v4l.org/D6buv
$order = [465, 472, 442, 410, 396, 395, 297, 364, 355, 221];
$products = array(
array(
'_id' => '57208ea27f8b9a5e048b4598',
'topic_id' => 472,
'host_pic' => '/topic',
'topic_name' => 'goods 1',
'template' => 4
),
array(
'_id' => '57208ea27f8b9a5e048b4598',
'topic_id' => 410,
'host_pic' => '/topic',
'topic_name' => 'goods 2',
'template' => 2
),
array(
'_id' => '57208ea27f8b9a5e048b4598',
'topic_id' => 465,
'host_pic' => '/topic',
'topic_name' => 'goods 3',
'template' => 1
),
array(
'_id' => '57208ea27f8b9a5e048b4598',
'topic_id' => 396,
'host_pic' => '/topic',
'topic_name' => 'goods 4',
'template' => 4
)
);
$column = array_flip(array_column($products, 'topic_id'));
$_products = [];
foreach ($order as $row) {
if (! empty($column[$row])) {
$_products[] = $products[$column[$row]];
}
}
print_r($_products);
ls的代码中! empty
改成isset
,否则$product[0]
做不了排序
另外如果topic_id
有重复的话,重复的元素不会在新书组中
所以还是写两个foreach
吧
$tmp = [];
foreach($order as $key=>$val) {
foreach($products as $k=>$v) {
if($v['topic_id'] == $val) {
$tmp[] = $v;
}
}
}