Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用php根据值对选项卡进行排序_Php_Sorting - Fatal编程技术网

使用php根据值对选项卡进行排序

使用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

我有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_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已经可以按键排序数组。请参阅更新的答案。非常感谢您的帮助。这正是我想要的。非常感谢你的帮助。这正是我想要的。