使用php基于值对选项卡进行排序

时间:2016-06-15 18:33:44

标签: php sorting

我有3个变量,包含3个不同的值(由admin管理)。

$tab_download_pos = 2;
$tab_download_title = "Download";
$tab_overview_pos = 1;
$tab_overview_title = "Overview";
$tab_faq_pos = 3;
$tab_faq_title = "FAQ";

现在我有3个标签,我想根据上面变量的值对标签进行排序。

三个标签是

1.Overview
2.Download
3.Faq

我是以这种方式开始的

$tab_arr = sort(array($tab_download_pos,$tab_overview_pos,$tab_faq_pos));

我做了foreach循环,但后来我迷路了。 我想根据我从后端获得的变量值对选项卡进行排序。

非常感谢任何帮助。提前谢谢。

3 个答案:

答案 0 :(得分:1)

无需排序。只需要将它们放在一个数组中,用ksort按键对它进行排序,然后迭代它们:

$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";
}

答案 1 :(得分:1)

由于数字可能没有差距,我建议创建一个包含标题和位置的数据结构,然后在位置上对其进行排序:

$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',
  ),
)

答案 2 :(得分:0)

这是你的代码。不要将sort保存到变量中,它只给出布尔值。以这种方式做到这一点

<?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);

结果:

Array ( [0] => 1 [1] => 2 [2] => 3 )