我有这个代码:
<?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
我试着用multisort
和foreach
来解决这个问题。但对我来说,这似乎是一个很难解决的逻辑。我似乎无法通过在谷歌和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