对多个单独的PHP数组进行排序并使密钥保持同步

时间:2015-07-25 20:56:49

标签: php arrays sorting key sync

我有三个与同一个键同步的数组,我需要natsort并将array_values()应用于array1,同时保持array2和array3与array1values()为array1设置的新键同步。

我环顾四周,找不到任何方法,用于在排序其中一个数据键后保持多个数组键同步。提前感谢您对此问题的任何帮助。

-- 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的排序和重新键入的最终结果相匹配。

对此的任何帮助将不胜感激。谢谢。

2 个答案:

答案 0 :(得分:1)

你可以在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上应用array_values()。

注意:pre只是在中间打印数组而没有其他功能。

答案 1 :(得分:0)

以下是我的解决方案,您可以对$('.prev').click

执行相同操作
$required_array3