我有 2 个数组,它们都是多维的,具有相同数量的元素和相同的值,它们位于不同的位置(这些值实际上是我数据库中的 ID,所以一个 ID 只出现一次)。如何使用第一个数组中的值对第二个数组进行排序?
例如 - 如果第一个数组看起来像:
$array1[0][0] = 1;
$array1[0][x] = it doesn't matter what's here
$array1[1][0] = 4;
$array1[1][x] = it doesn't matter what's here
$array1[2][0] = 3;
$array1[2][x] = it doesn't matter what's here
...
如何对第二个数组进行排序,使其在索引 [0][0]、[1][0]、[2][0] 等上具有与 array1 相同的值。
我如何解决问题是:
$i=0
while ($i < (count($array1)-2)){ // * check down
$find_id = $array1[$i][0];
// here I need to search for index of that ID in other array
$position = give_index($find_id, $array2);
// swapping positions
$temp = array2[$i][0];
$array2[$i][0] = $array2[$position][0];
$array2[$position][0] = $temp;
// increasing counter
i++;
}
function give_index($needle, $haystack){
for ($j = 0, $l = count($haystack); $j < $l; ++$j) {
if (in_array($needle, $haystack[$j][0])) return $j;
}
return false;
}
- *只有 -2 因为索引从 0 开始,并且对于您不需要检查的最后一个元素,因为它将由 while 循环的最后一次迭代自动排序。
我觉得这个解决方案不好,因为我认为这是一个非常简单的问题(也许它甚至不正确)。PHP 中是否有我缺少的更简单的方法?