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

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

그누위즈 5년 전 조회 4,953

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

</p>

<p>$data1 = array('0' => '2', '1' => '17', '2' => '1');

$data2 = array('0' => '1', '1' => '2', '2' => '17');</p>

<p> </p>

<p>$data1

(

    [0] => 2

    [1] => 17

    [2] => 1

)</p>

<p>

$data2

(

    [0] => 1

    [1] => 2

    [2] => 17

)</p>

<p>

출력을 원하는 것은

$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 포인트
B
5년 전

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

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

</p>

<p><?php</p>

<p>$data1 = [2, 17, 1];

$data2 = [1, 2, 17];</p>

<p>$result = [];

if ( count($data1)!=count($data2) ) exit('두 배열의 크기가 다름');

foreach ( $data1 as $k=>$v ) $result[] = $v>$data2[$k] ? $v : $data2[$k];</p>

<p>/*</p>

<p>Array

(

    [0] => 2

    [1] => 17

    [2] => 17

)</p>

<p>*/

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

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

그누위즈

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

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

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

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

답변에 대한 댓글 1개

B
BiHon
5년 전
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]

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

openlook
5년 전
로그인 후 평가할 수 있습니다

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

5년 전

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

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

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

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

 

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

답변에 대한 댓글 1개

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

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

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

로그인