배열] 특정 컬럼의 값중 큰값의 키값을 가져오기

배열] 특정 컬럼의 값중 큰값의 키값을 가져오기

QA

배열] 특정 컬럼의 값중 큰값의 키값을 가져오기

본문

검색으로 해결이 안되서 질문 드립니다.

$choice = array ("lv" => "10", "point" => "1000", "test1" =>"12", "test2" =>"11", "test3" =>"5", "test4" =>"25",  );

위 배열에서 test1~4 키값 중에 제일 큰 키값을 가져오고 싶습니다.  'lv'와 'point' 빼고 비교

 

지금 하려는 행위

$test1 = $choice['test1'];

$test2 = $choice['test2'];

$test3 = $choice['test3'];

$test4 = $choice['test4'];

 

if{ $test1 > $test2 )  $col = 'test1';

..  모든 경우의 수를 다 비교 하려고 하는데...  좀 막아주세요.. ㅜㅜ;

 

 

이 질문에 댓글 쓰기 :

답변 4

$max_val = max($choice);

#배열중 가장 큰 값 추출
$max_val_key = array_search($max_val, $choice);

#값이 가리키는 키값 추출

 

이렇게 하면 되지 않을까요?

$test[1] = $choice['test1'];
$test[2] = $choice['test2'];
$test[3] = $choice['test3'];
$test[4] = $choice['test4'];
$max_val = max($test);
$max_val_key = array_search($max_val, $test);

알려주신 대로 해결했습니다. 감사합니다.

아 그리고 point 값을 제외한다고 했으니 아래처럼 제외하고 하시면 될듯합니다

<?php
// 1 배열생성
// 2 'D'의 키 값 알아내기
// 3 2번에서 알아낸 키 값을 삭제
// 4 배열 확인하기

$array = array( 'A', 'B', 'C', 'D', 'E' );
$key = array_search( 'D', $array );
array_splice( $array, $key, 1 );
print_r( $array );

> Array ( [0] => A [1] => B [2] => C [3] => E )
?>


$choice = array ("lv" => "10", "point" => "1000", "test1" =>"12", "test2" =>"11", "test3" =>"5", "test4" =>"25",  );
$max = 0;
foreach ($choice as $k => $v) {
    if ($k == 'lv' || $k == 'point')
        continue;
        
    if ($max < $v) {
        $max = $v;
    }
}
echo $max;

답변 감사합니다.  이런 방법도 있군요. 안목을 넓혔습니다. 감사합니다.

질문의 배열은 샘플이였구요.
실제는 제외할 배열이 좀 많습니다.  제외할 배열을 모두 비교문에 넣는게 왠지 노가다 같은...
한번 응용해보겠습니다.

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

회원로그인

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