对多个单独的PHP数组进行排序并保持键同步
我有三个与同一个键同步的数组,我需要对array1进行natsort并将array2和array3应用于array1,同时保持array2和array3与array1通过ArrayU值()设置的新键同步 我环顾四周,在对其中一个数组键进行排序后,找不到任何用于保持多个数组键同步的方法。提前感谢您对这个问题的任何帮助对多个单独的PHP数组进行排序并保持键同步,php,arrays,sorting,key,sync,Php,Arrays,Sorting,Key,Sync,我有三个与同一个键同步的数组,我需要对array1进行natsort并将array2和array3应用于array1,同时保持array2和array3与array1通过ArrayU值()设置的新键同步 我环顾四周,在对其中一个数组键进行排序后,找不到任何用于保持多个数组键同步的方法。提前感谢您对这个问题的任何帮助 -- array1 (unsorted) Array ( 0 => OA.3, 1 => OA.8, 2 => OA.6, 3 => OA.2
-- array1 (unsorted)
Array (
0 => OA.3,
1 => OA.8,
2 => OA.6,
3 => OA.2,
)
-- array2 (unsorted)
Array (
0 => 4,
1 => 1,
2 => 5,
3 => 3,
)
-- array3 (unsorted)
Array (
0 => 3,
1 => 1,
2 => 5,
3 => 0,
)
-- array1 (natsorted)
Array (
3 => OA.2,
0 => OA.3,
2 => OA.6,
1 => OA.8,
)
-- array_values(natsort(array1))
Array (
0 => OA.2,
1 => OA.3,
2 => OA.6,
3 => OA.8,
)
--- needed result for array2/array3 ---
-- array2 (keys matching array1)
Array (
0 => 3,
1 => 4,
2 => 5,
3 => 1,
)
-- array3 (keys matching array1)
Array (
0 => 0,
1 => 3,
2 => 5,
3 => 1,
)
在对array1进行natsort()和array_values()排序期间,是否有办法使这三个数组保持同步?array2和array3的最终结果显示与array1排序和重新设置关键帧的最终结果相匹配的新关键帧
在此方面的任何帮助都将不胜感激。谢谢。您可以在natsort之后使用数组A的键对数组B和数组C进行排序。。。例如:
<?PHP
function pre($a) { echo '<pre>'; print_r( $a ); echo '</pre>'; }
$a = array(
0 => 'OA.3',
1 => 'OA.8',
2 => 'OA.6',
3 => 'OA.2'
);
$b = array (
0 => '4',
1 => '1',
2 => '5',
3 => '3'
);
$c = array (
0 => 3,
1 => 1,
2 => 5,
3 => 0,
);
pre( $a );
natsort( $a );
pre( $a );
foreach( $a AS $key => $var ) {
$bb[] = $b[ $key ];
$cc[] = $c[ $key ];
}
echo '$bb:<br />';
pre( $bb );
echo '$cc:<br />';
pre( $cc );
?>
排序完成后,可以对数组$a、$bb和$cc应用数组_值()
注意:pre仅用于打印阵列的中间部分,没有其他功能。这是我的解决方案,您可以对
$required\u array3执行相同的操作
您想要什么作为最终输出?我在理解你的问题时遇到问题。@很抱歉,我刚刚更新了OP。在重新阅读该帖子后,我意识到它有点混乱。让我知道它是否更好,现在更好,也发布数组1、2和3,因为var\u export()
,而不是print\u r()
@Viral ok刚刚将输出更改为var\u export()对你来说,我也觉得我需要手动完成这项工作,并以某种方式准备natsort的顺序和键,并将它们存储在临时变量中,以将它们应用到其他2个数组中,但我甚至无法理解这一点。我不是php的高手,所以我甚至不知道是否有可能读取natsort的顺序并存储这些数字和它们的实际键,以便在不破坏其他2个数组的情况下应用它们。这看起来非常优雅且易于阅读,我将尝试几次,如果一切顺利,我会将其标记为接受。非常感谢。
$required_array2 = array();
foreach ($your_array2 as $key => $value)
{
$k = array_search($value, $your_array1); // Original array [unsorted]
$required_array2[$k] = $value;
}