无法根据已排序的另一个数组重新排列数组


Cannot rearrange arrays in accordance with another array that has been sorted

我有这个代码:

<?php
   $sort = array(1.5, 3.4, 2.1, 4.9, 5.7, 6.3);
   sort($sort);
   $tampil=array('abc','hoho','hah','something','lol','nice');
   $tampil2=array('wait','wush','wicked','who','why','what');
   for ($i = 0; $i < count($sort); $i++) {
       echo $i.'_<strong>'.$sort[$i].'</strong>'; 
       echo '_'.$tampil[$i].'_';
       echo $tampil2[$i].' <br />';
   }
?>

结果是:

0_1.5_abc_wait 
1_2.1_hoho_wush 
2_3.4_hah_wicked 
3_4.9_something_who 
4_5.7_lol_why 
5_6.3_nice_what 

我想要的是,$tampil[$i]将根据排序后的$sort显示,$tampil2[$i]也将显示($i$sort中的$i之后)。我希望它看起来是这样的:

0_1.5_abc_wait 
1_2.1_hah_wicked //$tampil and $tampil2's positions change by the sorted $sort
2_3.4_hoho_wush
3_4.9_something_who 
4_5.7_lol_why 
5_6.3_nice_what 

我试着用multisortforeach来解决这个问题。但对我来说,这似乎是一个很难解决的逻辑。我似乎无法通过在谷歌和StackOverFlow中查询找到解决方案。需要帮助。:)谢谢

以下是您要查找的内容!阵列多端口

array_multisort($sort, $tampil, $tampil2);

array_multisort根据第一个对第一个数组进行排序并重新索引其他数组

结果

0_1.5_abc_wait 
1_2.1_hah_wicked 
2_3.4_hoho_wush 
3_4.9_something_who 
4_5.7_lol_why 
5_6.3_nice_what 
<?php
$sort = array(1.5, 3.4, 2.1, 4.9, 5.7, 6.3);
$sort_dup = $sort;
sort($sort_dup);
$tampil=array('abc','hoho','hah','something','lol','nice');
$tampil2=array('wait','wush','wicked','who','why','what');
$i = 0;
foreach($sort_dup as $sorted) {
   $key = array_search($sorted, $sort);
   echo $i."_".$sorted."_".$tampil[$key]."_".$tampil2[$key]."<br />";
}
?>

好吧,我已经创建了一个副本并对它进行了排序。循环时,它从原始数组中获取关键字,并打印出其他2个数组元素的值。它具有与array_multisort()PHP函数相同的逻辑和工作方式。

排序如下

<?php
$sort = array(1.5, 3.4, 2.1, 4.9, 5.7, 6.3);
$tampil=array('abc','hoho','hah','something','lol','nice');
$tampil2=array('wait','wush','wicked','who','why','what');
array_multisort($sort, SORT_ASC, SORT_REGULAR, $tampil, $tampil2);
var_dump($sort, $tampil, $tampil2);

如果您像这样格式化数组,您可以在项上使用ksort,然后轻松地循环它们。

注意:密钥的1.5, 3.4, etc.必须是字符串才能工作。

像这样:

<?php
$sort = array(
        "1.5" => array(
        "abc",
        "wait"
    ), 
    "3.4" => array(
        "hoho",
        "wush"
    ), 
    "2.1" => array(
        "hah",
        "wicked"
    ), 
    "4.9" => array(
        "something",
        "who"
    ), 
    "5.7" => array(
        "lol",
        "why"
    ), 
    "6.3" => array(
        "nice",
        "what"
    )
);
ksort($sort);

$i = 0;
foreach($sort as $key => $value){
    echo "{$i}_{$key}_{$value[0]}_{$value[1]}'n";
    $i++;
}

最终输出将如下所示:

0_1.5_abc_wait
1_2.1_hah_wicked
2_3.4_hoho_wush
3_4.9_something_who
4_5.7_lol_why
5_6.3_nice_what