배열 크기비교후 추출

배열 크기비교후 추출

QA

배열 크기비교후 추출

본문

결과값이 배열2의 " (e>a=d>c>b) " 로 표기하고자 합니다.
결과은값 큰값순으로 배열되고 >, = 로 표시하고자 합니다.

기본지식이 없어서... 아직도 헤메고 있습니다. 
-------------
$nums1 = explode(',', '3,1,2,3,6'); // 배열1
$nums2 = explode(',', 'a,b,c,d,e'); // 배열2
$num3 = array_combine($nums1, $nums2);
krsort($num3);
print_r($num3);
-------------

이 질문에 댓글 쓰기 :

답변 1


<?php
$nums1 = explode(",", "3,1,2,3,6"); // 배열1
$nums2 = explode(",", "a,b,c,d,e"); // 배열2
$num3 = array_combine($nums2, $nums1);
arsort($num3);

$tmp = "";
foreach($num3 as $k => $v){
    if($tmp){
        if($tmp<$v){ echo " < ";}
        if($tmp>$v){ echo " > ";}
        if($tmp==$v){ echo " = ";}
    }
    $tmp = $v;
    echo $k;
}
?>

무엇을 구현하시는지는 잘 이해가 안되지만...

위 방식으로 하면 됩니다.

배열을 정렬 후 최대값의 key 하나만 필요하신건가요?


<?php
$nums1 = explode(",", "3,1,2,3,6"); // 배열1
$nums2 = explode(",", "a,b,c,d,e"); // 배열2
$num3 = array_combine($nums2, $nums1);
arsort($num3);

echo key($num3);
?>

원하시는 값이 e > a = d > c > b 이것인가요?
아님 e 이것인가요....

밑에 써드리는 코드가 작동은 하겠지만
실제 데이터를 어떻게 응용하여 쓸것인가에 대해서는 다른방식이 더 올바를 수도 있습니다


<?php
$nums1 = explode(",", "3,1,2,3,6"); // 배열1
$nums2 = explode(",", "a,b,c,d,e"); // 배열2
$num3 = array_combine($nums2, $nums1);
arsort($num3);

$tmp = "";
foreach($num3 as $k => $v){
    if($tmp){
        if($tmp<$v){ $final_k .= " < ";}
        if($tmp>$v){ $final_k .= " > ";}
        if($tmp==$v){ $final_k .= " = ";}
    }
    $tmp = $v;
    $final_k .= $k;
}
echo $final_k;
?>


<?php
$nums1 = explode(",", "3,1,2,3,6"); // 배열1
$nums2 = explode(",", "a,b,c,d,e"); // 배열2
$num3 = array_combine($nums2, $nums1);
arsort($num3);

$final_k = key($num3);
echo $final_k;
?>

앗! 제가 잘못 보았네요. 아래 로직이 원하는 값으로 잘 나오고 있습니다. 감사합니다.

<?php
$nums1 = explode(",", "3,1,2,3,6"); // 배열1
$nums2 = explode(",", "a,b,c,d,e"); // 배열2
$num3 = array_combine($nums2, $nums1);
arsort($num3);

$tmp = "";
foreach($num3 as $k => $v){
    if($tmp){
        if($tmp<$v){ $final_k .= " < ";}
        if($tmp>$v){ $final_k .= " > ";}
        if($tmp==$v){ $final_k .= " = ";}
    }
    $tmp = $v;
    $final_k .= $k;
}
echo $final_k;
?>


<?php
$nums1 = explode(",", "3,1,2,3,6"); // 배열1
$nums2 = explode(",", "a,b,c,d,e"); // 배열2
$num3 = array_combine($nums2, $nums1);
arsort($num3);

$tmp = "";
foreach($num3 as $k => $v){
    if($tmp){
        if($tmp<$v){ $final_k .= " < ";}
        if($tmp>$v){ $final_k .= " > ";}
        if($tmp==$v){ $final_k .= " = ";}
    }
    $tmp = $v;
    $final_k .= $k;
}
?>


<?php echo $final_k; ?>

충분히 답변이 되었으리라 생각합니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 123,592 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT