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

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

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

채택된 답변
+20 포인트

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

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

Copy
<?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
)

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

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

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

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

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

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

답변에 대한 댓글 1개

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

[code]
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개 초과하면, 값 추가만 하면 편함.
}
[/code]

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

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

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

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

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

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

 

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

답변에 대한 댓글 1개

배열이 수백 수천개가 되서
포문이 다소 비효율적이라서 ㅠㅠ 다른 방법이있나 고민중입니다 ㅠㅠ

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

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

로그인
🐛 버그신고