2015-01-14 5 views
0

PHP를 처음 사용했습니다. &이 작업을 수행 할 수 있을지 확신하지 못합니다.하지만 어떻게 해야할지 알고 싶습니다. 제출해야하는 모든 데이터를 수집했지만 json_encode를 사용하여 데이터베이스에 전송하려면 먼저 형식을 다시 지정해야합니다.PHP 다차원 연관 배열

기본적으로 3 개의 하위 배열 ($ hours, $ WId, $ Pid)을 포함하는 1 개의 상위 배열 ($ data)이 있습니다. 각 인덱스 위치 &에 대해 연관 배열을 만들어야합니다.

Array ([hours] => Array ([0] => 0.5 [1] => 1 [2] => 2)) 
Array ([wId] => Array ([0] => 10, [1] => 9, [2] => 8,)) 
Array ([phaseId] => Array ([0] => 20, [1] => 20, [2] => 19,)) 

내가 그들을 돌려 &이 "수직"배열을해야합니다 나는이 배열의 각을 print_r의 경우

다음
$data = array(
'hours' => array(), 
'wId' => array(), 
'phaseId' => array(), 
); 

현재 반환 것입니다 : 여기

내 상위 배열입니다 $ array $ array $ array $ array $ array $ array $ array $ array $ array $ array $ array $ array $ array $ array $ array $ array $ array $ array $ array $ array $ array $ array $ array $ array $ array $ array $ array 배열을 $ index로 $ array에 저장한다. 여기에 (문법은 아마 잘못하지만 당신은 아이디어를 얻을 수 있습니다.) 내가 쉽게 할 수있게 해주는 기능

Array[1] ("hours" => 0.5, "wId" => 10, "phaseId" => 20) 
Array[2] ("hours" => 1, "wId" => 9, "phaseId" => 20) 
Array[3] ("hours" => 2, "wId" => 8, "phaseId" => 19) 

있나요 .... 내가 반환해야 무엇인가? &을 병합하는 방법을 알았지 만 배열 이름 (시간 등)을 $ 키 & $ 값으로 각 인덱스의 값으로 설정하는 방법을 잘 모릅니다. 배열의 길이가 다양하기 때문에 반복해야합니다. (그러나 그들은 항상 같은 길이됩니다 서로 같은, 그래서 여전히 수집 할 필요가 무엇으로 작동합니다 인덱스입니다.) 모든 제안을 크게 감상 할 수

:

답변

1
<?php 
// set up your output array 
$result = array(); 

// loop through $data, exposing $name for later use 
foreach ($data as $name => $array) { 

    // loop through each named array and set the desired value 
    // using the current $key and $name 
    foreach ($array as $key => $value) { 
     $result[$key][$name] = $value; 
    } 
} 

// tada! 
print_r($result); 

참고 :에서 당신의 귀하의 질문에 원하는 결과, 당신은 1에서 시작하는 부모 배열 키를했습니다. 이 답변은 오타라고 가정하고 실제로 입력과 일치시키기를 원합니다. 만약 당신이 정말로 그것을 하나에서 시작하고 싶다면, 내 대답 에선이 줄을 바꾸면된다 :

$result[$key+1][$name] = $value; 
+0

그것은 완벽하게 작동한다! 분명히 배열에 너무 많은 레벨이 있었기 때문에 몇 가지 문제가 발생했지만 일단 나머지 코드가 작동하게되면 솔루션이 훌륭하게 작동합니다 !! 도와 줘서 고마워. – heat222

+0

@ heat222 내 기쁨! – mopo922