我有两个表:表 1 和表 2
我需要对数据进行排序,如 TableView 中所示。
我已经采取了:
foreach($Table1 as $row1 )
{
foreach($Table2 as $row2 )
{
if($row1->id == $row2->selected_id)
{
show??
}
}
}
请不要担心查询:它已解决真正的问题是:
只有一个问题:表1是由20个不同的函数生成的,并收集到表1中。用户通过选择来选择他们想要查看的内容。因此,如果总共 7 行并且用户选择 3 行,那么数据将被排序,显示在第一行选择 3 行,在 3 行之后其余行。
这是正确的方法吗?还是有更简单的方法 我正在使用MySQL
请帮助任何人吗?
最佳答案
根据您的additional question ,看来您不想为此使用 MySQL,并且您的用户选择实际上是一个像这样的数组:
$filter = [ 3, 4, 7, 8 ];
使用array_reduce
过滤原始$Table1
数组。使用此方法,您可以获得一个数组 ($filtered
),其中元素 0 中包含用户选择,元素 1 中包含其他值:
$filtered = array_reduce
(
$Table1,
function( $carry, $item ) use( $filter )
{
$index = !in_array( $item['id'], $filter );
$carry[$index][] = $item;
return $carry;
},
[ [], [] ]
);
然后,将 $filtered
数据与 call_user_func_array
合并:
$result = call_user_func_array( 'array_merge', $filtered );
结果:
Array
(
[0] => Array
(
[id] => 3
[name] => C
)
[1] => Array
(
[id] => 4
[name] => D
)
[2] => Array
(
[id] => 7
[name] => G
)
[3] => Array
(
[id] => 8
[name] => H
)
[4] => Array
(
[id] => 1
[name] => A
)
[5] => Array
(
[id] => 2
[name] => B
)
[6] => Array
(
[id] => 5
[name] => E
)
[7] => Array
(
[id] => 6
[name] => F
)
)
关于php根据第二个表对数据进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36620806/