使用php根据值对选项卡进行排序
我有3个变量,其中包含3个不同的值(由管理员管理) 现在我有3个选项卡,我想根据上述变量的值对选项卡进行排序 这三个选项卡是使用php根据值对选项卡进行排序,php,sorting,Php,Sorting,我有3个变量,其中包含3个不同的值(由管理员管理) 现在我有3个选项卡,我想根据上述变量的值对选项卡进行排序 这三个选项卡是 1.Overview 2.Download 3.Faq 我是这样开始的 $tab_arr = sort(array($tab_download_pos,$tab_overview_pos,$tab_faq_pos)); <?php $tab_download_pos = 2; $tab_download_title = "Download"; $tab_ove
1.Overview
2.Download
3.Faq
我是这样开始的
$tab_arr = sort(array($tab_download_pos,$tab_overview_pos,$tab_faq_pos));
<?php
$tab_download_pos = 2;
$tab_download_title = "Download";
$tab_overview_pos = 1;
$tab_overview_title = "Overview";
$tab_faq_pos = 3;
$tab_faq_title = "FAQ";
$tab_arr = [$tab_download_pos,$tab_overview_pos,$tab_faq_pos];
sort($tab_arr);
print_r($tab_arr);
我做了每个循环,但是我迷路了。
我想根据从后端获取的变量值对选项卡进行排序
非常感谢您的帮助。提前感谢。无需排序。只需将它们放入一个数组中,使用键对其进行排序,然后对它们进行迭代:
$a = array();
$a[$tab_download_pos] = $tab_download_title;
$a[$tab_overview_pos] = $tab_overview_title;
$a[$tab_faq_pos] = $tab_faq_title;
ksort($a);
foreach($a as $p => $title) {
echo "$p.$title\n";
}
不需要排序。只需将它们放入一个数组中,使用键对其进行排序,然后对它们进行迭代:
$a = array();
$a[$tab_download_pos] = $tab_download_title;
$a[$tab_overview_pos] = $tab_overview_title;
$a[$tab_faq_pos] = $tab_faq_title;
ksort($a);
foreach($a as $p => $title) {
echo "$p.$title\n";
}
这是你的密码。不要将sort保存到变量中,因为它只提供布尔值。这样做吧
$tab_arr = sort(array($tab_download_pos,$tab_overview_pos,$tab_faq_pos));
<?php
$tab_download_pos = 2;
$tab_download_title = "Download";
$tab_overview_pos = 1;
$tab_overview_title = "Overview";
$tab_faq_pos = 3;
$tab_faq_title = "FAQ";
$tab_arr = [$tab_download_pos,$tab_overview_pos,$tab_faq_pos];
sort($tab_arr);
print_r($tab_arr);
这是你的密码。不要将sort保存到变量中,因为它只提供布尔值。这样做吧
$tab_arr = sort(array($tab_download_pos,$tab_overview_pos,$tab_faq_pos));
<?php
$tab_download_pos = 2;
$tab_download_title = "Download";
$tab_overview_pos = 1;
$tab_overview_title = "Overview";
$tab_faq_pos = 3;
$tab_faq_title = "FAQ";
$tab_arr = [$tab_download_pos,$tab_overview_pos,$tab_faq_pos];
sort($tab_arr);
print_r($tab_arr);
由于数字可能并非没有差距,我建议创建一个包含标题和职位的数据结构,然后根据职位对其进行排序:
$tab_download_pos = 2;
$tab_download_title = "Download";
$tab_overview_pos = 1;
$tab_overview_title = "Overview";
$tab_faq_pos = 4;
$tab_faq_title = "FAQ";
$tab_arr = array(
array( "pos" => $tab_download_pos, "title" => $tab_download_title ),
array( "pos" => $tab_overview_pos, "title" => $tab_overview_title ),
array( "pos" => $tab_faq_pos, "title" => $tab_faq_title ),
);
usort($tab_arr, function ($a, $b) { return $a["pos"] - $b["pos"]; });
然后,阵列如下所示:
array (
array (
'pos' => 1,
'title' => 'Overview',
),
array (
'pos' => 2,
'title' => 'Download',
),
array (
'pos' => 4,
'title' => 'FAQ',
),
)
由于数字可能并非没有差距,我建议创建一个包含标题和职位的数据结构,然后根据职位对其进行排序:
$tab_download_pos = 2;
$tab_download_title = "Download";
$tab_overview_pos = 1;
$tab_overview_title = "Overview";
$tab_faq_pos = 4;
$tab_faq_title = "FAQ";
$tab_arr = array(
array( "pos" => $tab_download_pos, "title" => $tab_download_title ),
array( "pos" => $tab_overview_pos, "title" => $tab_overview_title ),
array( "pos" => $tab_faq_pos, "title" => $tab_faq_title ),
);
usort($tab_arr, function ($a, $b) { return $a["pos"] - $b["pos"]; });
然后,阵列如下所示:
array (
array (
'pos' => 1,
'title' => 'Overview',
),
array (
'pos' => 2,
'title' => 'Download',
),
array (
'pos' => 4,
'title' => 'FAQ',
),
)
位置是否保证为1、2和3?或者它们可以是1、2和4,而没有一个有3?@trincot问得好。是的,它们可以是1,2,4。管理员可能会也可能不会从管理员那里添加标签3。好的,我已经发布了我的答案来解决这个问题。职位保证是1、2和3吗?或者它们可以是1、2和4,而没有一个有3?@trincot问得好。是的,它们可以是1,2,4。管理员可能会也可能不会从管理员那里添加标签3。好的,我已经发布了我的答案来解决这个问题。如果顺序是1,2,3,效果会很好,但是如果顺序是1,3,4,它就会中断。我是否需要使用像数组$a的最大键这样的函数,然后从for循环中删除4并使用该最大值。谢谢。@Raj,我明白了。ksort已经可以按键排序数组。请参阅更新的答案。如果序列为1,2,3,效果会很好,但如果序列为1,3,4,则会中断。我是否需要使用像数组$a的最大键这样的函数,然后从for循环中删除4并使用该最大值。谢谢。@Raj,我明白了。ksort已经可以按键排序数组。请参阅更新的答案。非常感谢您的帮助。这正是我想要的。非常感谢你的帮助。这正是我想要的。