2016-06-15 4 views
0

3 개의 다른 값을 갖는 3 개의 변수가 있습니다 (admin에서 관리).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"; 

이제 3 개의 탭이 있으며 위의 변수 값을 기반으로 탭을 정렬하고 싶습니다.

세 개의 탭이

1.Overview 
2.Download 
3.Faq 

은 내가 foreach 루프를 한이 방법

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

에서 시작하지만 내가 잃어버린하고 있습니다. 백엔드에서 가져 오는 변수의 값에 따라 탭을 정렬하고 싶습니다.

도움이 매우 감사합니다. 미리 감사드립니다.

+0

위치가 1, 2 및 3으로 보장 되나요? 아니면 예를 들어 1, 2 및 4 일 수 있으며 3은 없어도됩니까? – trincot

+0

@trincot 좋은 질문입니다. 네, 1,2,4가 될 수 있습니다. 관리자는 admin에서 탭 3을 추가 할 수도 있고 추가하지 않을 수도 있습니다. – Raj

+0

좋아요, 그에 대한 답변을 게시했습니다. – trincot

답변

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"; 
} 
+0

시퀀스가 ​​1,2,3이면 좋지만 1,3,4라면 끊어집니다. 배열 $ a의 최대 키와 같은 함수를 사용하고 for 루프에서 4를 제거하고 그 최대 값을 사용해야합니다. 감사. – Raj

+0

@Raj, 알겠습니다. ksort는 이미 키에 의해 배열을 정렬 할 수 있습니다. 업데이트 된 답변보기 – Fabricator

0

것은 여기에 귀하의 코드입니다. 변수에 정렬을 저장하지 않으면 부울 값만 제공합니다. 이 방법으로 그것을 수행

<?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) 
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', 
), 
) 
,174,
+0

도움을 많이 주셔서 감사합니다. 그것은 내가 원하는 방식으로 정확하게 작동합니다. – Raj

관련 문제