2010-11-29 4 views
0

두 배열의 정보가있는 테이블을 만들려고합니다.다른 배열에 따라 배열을 다시 색인화하고 작성하십시오.

Array 
(
    [0] => Array 
     [0] => green [1] => Color 

    [1] => Array 
     [0] => 23 [1] => Length 

    [2] => Array 
     [0] => [1] => Waist 

Array 
(
    [0] => Array 
     [0] => [1] => Color 

    [1] => Array 
     [0] => [1] => Length 

    [2] => Array 
     [0] => [1] => Waist 

Array 
(
    [0] => Array 
     [0] => [1] => Color 

    [1] => Array 
     [0] => 23 [1] => Length 

    [2] => Array 
     [0] => 24 [1] => Waist 
:

먼저 배열 테이블 헤더

Array 
(
    [0] => Color 
    [1] => Length 
    [2] => Waist 
) 

두 번째 배열,

Array 
(
    [0] => Array 
     [0] => green [1] => Color 

    [1] => Array 
     [0] => 23 [1] => Length 
) 
Array 
(
    [0] => 
) 
Array 
(
    [0] => Array 
     [0] => 23 [1] => Length 

    [1] => Array 
     [0] => 24 [1] => Waist 
)  

배열은 다음과 같이 할 필요가 수정을 필요로 하나, 다음은 두 배열은

그래서 요점은 첫 번째 수준의 키가 배열의 키와 일치해야한다는 것입니다. kes the table headers, 여기서 [1] 두 번째 레벨은 테이블 헤더와 같은 값을가집니다. 어떤 아이디어?

+0

그것은 당신의 문제를 파악하기 힘듭니다. 배열을 다시 포맷해야합니까? 적절한 형식으로 배열을 제공하기 위해 스크립트를 생성하는 스크립트를 변경할 수 있습니까? – Stephen

+0

숫자 키 순서가 중요합니까? – Stephen

+0

Array ([Color] => green, [Length] => 23, [Waist] => 24)'대신에 왜? 그것은 훨씬 더 논리적 인 IMHO입니다. 나는 당신의 질문에 대답하지 않기 때문에 대답 대신에 주석으로 답합니다. – Jonah

답변

2

로 시작하는 것이 좋습니다 필요한 것을 찾을 수 있습니다 데이터. 최종 배열이 더 좋아질 수 있습니까? 당신이 당신의 구조에 죽은 세트라면

$data = array(
    array(
     'Color' => 'green', 
     'Length' => 23, 
     'Waist' => NULL 
    ), 
    array(
     'Color' => NULL, 
     'Length' => NULL, 
     'Waist' => NULL 
    ), 
    array(
     'Color' => NULL, 
     'Length' => 23, 
     'Waist' => 24 
    ) 
); 

하지만,이 작업을해야합니다 :

function format_my_array($keys, $malformed) { 
    foreach ($malformed as $key => $fragments) { 
     $temp = array(
      'Color' => NULL, 
      'Length' => NULL, 
      'Waist' => NULL 
     ); 
     foreach ($fragments as $fragment) { 
      if (isset($fragment[1])) { 
       switch($fragment[1]) { 
        case 'Length': 
         $temp['Length'] = $fragment[1]; 
         break; 
        case 'Waist': 
         $temp['Waist'] = $fragment[1]; 
         break; 
        default: 
         $temp['Color'] = $fragment[1]; 
         break; 
       } 
      } 
     } 
     $malformed[$key] = array(
      array($temp['Color'], 'Color'), 
      array($temp['Length'], 'Length'), 
      array($temp['Waist'], 'Waist') 
     ); 
    } 
    return $malformed; 
} 
+0

네 말이 맞아, 나는 배열을 생성하는 스크립트로 작업 할 것이다. – Toxid

+0

코드를 살펴보고 assossiative 키를 추가했을 때 스크립트가 이전보다 훨씬 깨끗한 코드로 작업 할 수 있음을 알려드립니다. 필자는 php를 처음 접했을 때 keynames의 유용성을 완전히 잊어 버렸습니다. 감사합니다! – Toxid

+0

괜찮습니다. 천만에요. – Stephen

관련 문제