2

我有这个代码:

<?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]将按照 sorted 显示,$sort( $tampil2[$i]' $is 跟在$iin 之后$sort)。就像这样,我希望它如何出现:

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 

我试图做一些multisort事情foreach来解决这个问题。但这对我来说似乎是一个难以解决的逻辑。而且我似乎没有通过在 Google 和 StackOverFlow 中使用上面的标题进行查询来找到解决方案。需要帮忙。:) 谢谢..

4

4 回答 4

0

如果你像这样格式化你的数组,你可以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
于 2013-08-27T16:17:53.243 回答
0

这就是你要找的东西!array_multisort

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 
于 2013-08-27T16:07:37.787 回答
0
<?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 函数相同的逻辑和工作原理。

于 2013-08-27T16:07:45.907 回答
0

像这样排序

<?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);
于 2013-08-27T16:09:34.170 回答