테스트 사이트 - 개발 중인 베타 버전입니다

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

타버린나무 3년 전 조회 2,584

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

$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개

채택된 답변
+20 포인트
3년 전

$max_val = max($choice);

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

#값이 가리키는 키값 추출

 

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

타버린나무
3년 전
$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);

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

댓글을 작성하려면 로그인이 필요합니다.

홍혁거세

변수 = max(배열변수);

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

3년 전

</p>

<p>$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;

    }

}</p>

<p>echo $max;</p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

타버린나무
3년 전
답변 감사합니다. 이런 방법도 있군요. 안목을 넓혔습니다. 감사합니다.

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

댓글을 작성하려면 로그인이 필요합니다.

3년 전

아 그리고 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 )
?>

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인