SORT多个单独的PHP数组,并将键保持在同步中

问题描述 投票:0回答:3

我已经环顾四周,找不到任何用于在对其中一个键进行排序之后将多个数组键保持同步的方法。在此先感谢您解决此问题的任何帮助。

-- 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, )

在natsort()和array_values()Array1排序时,都可以将所有这三个数组中的所有三个数组保持在同步中? 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 ); ?>
php arrays sorting key synchronization
3个回答
2
投票
注:pre只是为了打印数组之间的介于两者之间,没有其他功能。

我的解决方案是我的解决方案,您可以做同样的事情
$required_array3

$required_array2 = array(); foreach ($your_array2 as $key => $value) { $k = array_search($value, $your_array1); // Original array [unsorted] $required_array2[$k] = $value; }


0
投票
这项任务正是设计要做的。 将第一个数组写为参数,然后添加参数以指示方向和比较样式,然后添加要同步突变的其他阵列。 demo

array_multisort()

输出:

0
投票


最新问题
© www.soinside.com 2019 - 2024. All rights reserved.