두 배열의 큰 값을 가져오고싶습니다.

두 배열의 큰 값을 가져오고싶습니다.

QA

두 배열의 큰 값을 가져오고싶습니다.

본문

안녕하세요~ 다음과 같은 2개의 배열이 있습니다.


$data1 = array('0' => '2', '1' => '17', '2' => '1');
$data2 = array('0' => '1', '1' => '2', '2' => '17');
 
$data1
(
    [0] => 2
    [1] => 17
    [2] => 1
)

$data2
(
    [0] => 1
    [1] => 2
    [2] => 17
)

출력을 원하는 것은

$data1[0] 과 $data2[0] 배열의 값은 각각 2, 1

$data1[1] 과 $data2[1] 배열의 값은 각각 17, 1

$data1[2] 과 $data2[2] 배열의 값은 각각 2, 17

 

두배열의 큰 값을 다른 새로운 배열에 지정해서 다음과 같이 받아오고 싶습니다.

$result[0] = 2

$result[1] = 17

$result[2] = 17

 

 

이 질문에 댓글 쓰기 :

답변 4

배열의 값이 수백, 수천이라도 원하는 결과를 얻기 위해 반복 처리는 필요합니다.

가장 간단한 처리가 가장 빠를 수 있습니다. 여기에서 벗어나면 오히려 효율이 떨어질 수 있습니다.


<?php
$data1 = [2, 17, 1];
$data2 = [1, 2, 17];
$result = [];
if ( count($data1)!=count($data2) ) exit('두 배열의 크기가 다름');
foreach ( $data1 as $k=>$v ) $result[] = $v>$data2[$k] ? $v : $data2[$k];
/*
Array
(
    [0] => 2
    [1] => 17
    [2] => 17
)
*/

포문으로 배열 돌리면서 두 배열 비교해서 그 큰값을 넣으면되시지 않을까요?

for($i=0;$i<3;$i++){

 if($data1[$i] > $data2[$i]) $result[$i] = $data1[$i];

else $result[$i] = $data2[$i];
}

 

많은 분들 답변 감사합니다.

openlook님의 max 함수를 반복문에서 배열을 비교하여 새 배열에 넣는 방법을 사용하였습니다.

가장 코드를 길게 설명해주신분에 채택하겠습니다.^^;;

2개를 초과한 배열의 체크라면 모를까, 2개 배열값 비교에서는 굳이 max() 함수를 사용할 필요가 없습니다.


if ( count($data1)!=count($data2) ) exit('두 배열의 크기가 다름');
// for ($i=0; $i<count($data1); $i++) {
// ↓ Tip! 반복문 돌면서 매번 배열 크기 구하는 것을 최초 한 번 수행으로 변경.
for ($i=0, $loop=count($data1), $result=[]; $i<$loop; $i++) {
    $result[] = max($data1[$i], $data2[$i]); // 2개 초과하면, 값 추가만 하면 편함.
}

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

회원로그인

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