2009-06-22 9 views
0

다중 배열에서 키를 "순서 재 지정"할 수 있습니까?다차원 배열의 주요 순서 이동

$arr["abc"][0] = "val1"; 
$arr["abc"][1] = "val2"; 
$arr["abc"][2] = "val3"; 
$arr["xyz"][0] = "val4"; 
$arr["xyz"][1] = "val5"; 
$arr["xyz"][2] = "val6"; 

을 그리고 난이 원하는 : 예를 들어, 내가 가진

foreach ($arr as $param => $num) foreach ($num as $val) $newArr[$num][$param] = $val; 

했지만, 제대로 동작하지 않습니다

$arr[0]["abc"] = "val1"; 
$arr[0]["xyz"] = "val4"; 
$arr[1]["abc"] = "val2"; 
$arr[1]["xyz"] = "val5"; 
$arr[2]["abc"] = "val3"; 
$arr[2]["xyz"] = "val6"; 

나의 현재의 노력이다. 도움이 될 것입니다.

EDIT : 특히, 나는 모두 동일한 작업이 필요하므로 $_FILES에 제출 된 모든 요소를 ​​반복하려고합니다. 기본적으로 양식에 <input type="file" name="filedata[]" />이 두 개 이상있는 경우 $_FILES["filedata"]["name"][$index]으로 이동합니다. ("name" 또는 다른 매개 변수), 모든 것을 얻으려면 모든 $_FILES["filedata"]을 반복 할 수 없습니다. 따라서, $_FILES["filedata"]의 키가 필요합니다.

답변

4

두 번째 foreach에서 여전히 키를 가져와야한다고 생각합니다. 다음과 같이 시도하십시오.

foreach($arr as $k1 => $v1) { 
    foreach ($v1 as $k2 => $v2) { 
    $newArray[$k2][$k1] = $v2 
    } 
} 
+0

으악를, 나는 바보입니다. 나는 그가 원하는 배열을 전혀 보지 못했다. –

0

찾고있는 것이 array_flip 인 것 같습니다. 여기 참조 : 두 foreach 루프 충분히

http://us3.php.net/manual/en/function.array-flip.php

+0

그 기능에 대한 설명서에서 "trans 값이 유효한 키 여야합니다. 즉, 정수 또는 문자열이어야합니다."라고 명시되어 있습니다.이 경우 포스터는 2D 배열의 키. 외부 배열의 각 요소 값이 문자열이나 정수가 아닌 배열 자체이기 때문에 2D 배열에 array_flip을 사용하면 작동하지 않습니다. – Peter

1

솔직한 :

// Original version: 
$arr = array(); 
$arr["abc"][0] = "val1"; 
$arr["abc"][1] = "val2"; 
$arr["abc"][2] = "val3"; 
$arr["xyz"][0] = "val4"; 
$arr["xyz"][1] = "val5"; 
$arr["xyz"][2] = "val6"; 

print_r($arr); 

$newarray = array(); 
// Swap around the keys 
foreach ($arr as $key1 => $val1) { 
    foreach ($val1 as $key2 => $val2) { 
     $newarray[$key2][$key1] = $val2;   
    } 
} 
print_r($newarray); 

여기 디스플레이의 :

// Display of $arr: 
//Array 
//(
// [abc] => Array 
//  (
//   [0] => val1 
//   [1] => val2 
//   [2] => val3 
//  ) 
// 
// [xyz] => Array 
//  (
//   [0] => val4 
//   [1] => val5 
//   [2] => val6 
//  ) 
// 
//) 



//Display of $newarray: 
//Array 
//(
// [0] => Array 
//  (
//   [abc] => val1 
//   [xyz] => val4 
//  ) 
// 
// [1] => Array 
//  (
//   [abc] => val2 
//   [xyz] => val5 
//  ) 
// 
// [2] => Array 
//  (
//   [abc] => val3 
//   [xyz] => val6 
//  ) 
// 
//) 
관련 문제