2012-07-01 3 views
0

합병은 이미 오름차순으로 정렬 된 마스터 배열을 가정합니다.인덱스를 기반으로 새로운 배열 생성 및 마스터 배열

$keys = array(0, 2, 1, 5); 

필수 논리 : 배열을 만들어야합니다 인덱스는 인덱스의 순서를 유지 $keys 저장됩니다 누가 $values의 요소로 시작

  • $output을 말한다.
  • 나머지 요소 인 $values은 오름차순으로 뒤쪽에 추가되어야합니다.
$values = array('value1', 'value2', 'value3', 'value4', 'value5', 'value6'); 
$keys = array(0, 2, 1, 5); 
$output = array('value1', 'value3', 'value2', 'value6', 'value4', 'value5'); 
$values = array('value1', 'value2', 'value3', 'value4', 'value5', 'value6'); 
$keys = array(5); 
$output = array('value6', 'value1', 'value2', 'value3', 'value4', 'value5'); 
$values = array('value1', 'value2', 'value3', 'value4', 'value5', 'value6'); 
$keys is empty, no keys(indexes). 
$output = array('value1', 'value2', 'value3', 'value4', 'value5', 'value6'); 

나는 $values$keys 배열을했습니다. 난 그냥 $output 배열을 만드는 방법을 알아 내야합니다. 이게 작동하려면 $values 배열에 foreach 루프가 있어야합니다. 여기 벽에 실행 아웃이 일을 내려고 노력하고있어

...

답변

1

이 시도 ...

기본적으로 $values 배열을 분석하고 관련 값을 잡아 당겨

. 배열을 설정 해제하면 정렬되지 않은 값만 남게됩니다. 배열의 나머지 항목은 루프 다음에 병합됩니다. array_merge와 함께.

배열을 설정 해제해도 인덱스 값이 변경되지 않으므로이 상황에서 유용합니다.

$keys$values보다 많으면 오류가 발생합니다. 일부 오류 검사를 추가해야합니다.

$values = array('value1', 'value2', 'value3', 'value4', 'value5', 'value6'); 
$keys = array(0, 2, 1, 5); 

foreach ($keys AS $key) { 
    $tempOutput[] = ($values[$key])?$values[$key]:''; 
    unset($values[$key]); 
} 

$output = array_merge($tempOutput, $values); 
+0

오케이, 멋지다. 고마워요. :) –

+0

걱정하지 않아도 도움이 되었기 때문에 기쁩니다! – cstrat

관련 문제