2011-10-14 3 views
1

특정 배열을 가져 오는 데 시간이 걸리므로 알아낼 수 없습니다.특정 배열 구조를 가져올 수 없습니다.

은 내가 foreach 루프이 시작 어레이 수 :

Array 
(
    [0] => Title 1 
    [1] => Image 1.jpg 
    [2] => Title 2 
    [3] => Image 2.png 
    [4] => Text 1 
) 

을 그리고 배열은 1 어레이 주문 (사용자 드래그 및 1 차 배열의 요소 드롭)

을 위해 생성해야 I 필요한 것을
Array 
(
    [0] => 1 
    [1] => 4 
    [2] => 0 
    [3] => 2 
    [4] => 3 
) 

는 제 2 배열의 값을 링크 (1, 4, 0, 2, 3) 제 배열의 키 ([0], 1 ...) 을 정확히 얻을 :

Array 
(
    [1] => Text 1 
    [4] => Image 2.png 
    [0] => Image 1.jpg 
    [2] => Title 1 
    [3] => Title 2 
) 

나는 array_combine을 시도했지만 위 결과를 제공하지 않습니다.

내가 문제를 이해하는 스키마를했습니다

: 일부 의사 코드 ( 내가 붙여 유효한 PHP 나는 그것을 수정으로이를 정정 너무 게으른 복사 여기

enter image description here

답변

0

사용자는 제 2 어레이의 각각의 값을 가지고 두 번째의 배열 순서와 키의 출력을 사용 하면서 첫 번째 배열을위한 키를 획득하기 위해 상기 제 2 어레이에 대한 키로서 사용된다

$mapped = array(); 

foreach($arr2 as $value) 
{ 
    $mapped[$value] = $arr1[$arr2[$value]]; 
} 

출력 :

Array 
(
    [1] => Text 1 
    [4] => Image 2.png 
    [0] => Image 1.jpg 
    [2] => Title 1 
    [3] => Title 2 
) 

Demo

+0

그 트릭을 했어! 정말 고맙습니다! 그것은 나를 많이 도왔다! – user990463

+0

도움이 되니 기쁩니다. 원본 데이터에서 키와 값을 교차 시키면 이해하기가 어려워 졌다고 생각합니다. 데이터를 결합하는 방법을 알기까지 어느 정도 시간이 걸렸습니다. – hakre

+0

예, 제 문제를 설명하는 방법을 이해하는 데 더 많은 시간을 필요로합니다. – user990463

4

입니다) :

<?php 
$items = Array 
(
    0 => 'Title 1', 
    1 => 'Image 1.jpg', 
    2 => 'Title 2', 
    3 => 'Image 2.png', 
    4 => 'Text 1', 
); 
$order = Array 
(
    0 => 1, 
    1 => 4, 
    2 => 0, 
    3 => 2, 
    4 => 3, 
); 

foreach ($order as $itemPosition) { 
    $sorted[] = $items[ $itemPosition ]; 
} 

// optionally 
ksort($sorted); 
var_dump($sorted); 

물론 이것은 $order 배열에 키가 있다고 가정합니다. 그렇지 않은 경우 foreach을 수행하기 전에 ksort을 실행하려고 할 수도 있습니다.

http://codepad.org/Lq8iw29w

관련 문제