2014-04-07 3 views
0
Array 
(
    [1] => Array 
     (
      [1] => Title 
      [2] => Exam1 
     ) 

    [2] => Array 
     (
      [1] => class_name 
      [2] => date 
      [3] => start_time 
      [4] => finish_time 
      [5] => subject 
      [6] => exam_details 
     ) 

    [3] => Array 
     (
      [1] => 10 
      [2] => 2014-03-08 
      [3] => 2014-03-26 08:44:15 
      [4] => 2014-03-26 08:44:15 
      [5] => Maths 
      [6] => Extra comments 
     ) 

    [4] => Array 
     (
      [1] => 10 
      [2] => 2014-03-07 
      [3] => 2014-03-26 08:44:15 
      [4] => 2014-03-26 08:44:15 
      [5] => Eng 
      [6] => Extra comments 
     ) 

    [5] => Array 
     (
      [1] => 10 
      [2] => 2014-03-06 
      [3] => 2014-03-26 08:44:15 
      [4] => 2014-03-26 08:44:15 
      [5] => Science 
      [6] => Extra comments 
     ) 

    [6] => Array 
     (
      [1] => Title 
      [2] => Exam2 
     ) 

    [7] => Array 
     (
      [1] => class_name 
      [2] => date 
      [3] => start_time 
      [4] => finish_time 
      [5] => subject 
      [6] => exam_details 
     ) 

    [8] => Array 
     (
      [1] => 10 
      [2] => 2014-03-08 
      [3] => 2014-03-26 08:44:15 
      [4] => 2014-03-26 08:44:15 
      [5] => Maths 
      [6] => Extra comments 
     ) 

    [9] => Array 
     (
      [1] => 10 
      [2] => 2014-03-07 
      [3] => 2014-03-26 08:44:15 
      [4] => 2014-03-26 08:44:15 
      [5] => Eng 
      [6] => Extra comments 
     ) 

    [10] => Array 
     (
      [1] => 10 
      [2] => 2014-03-06 
      [3] => 2014-03-26 08:44:15 
      [4] => 2014-03-26 08:44:15 
      [5] => Science 
      [6] => Extra comments 
     ) 

) 

위에서 볼 수 있듯이 첫 번째 배열에는 일부 제목과 제목 이름이 있고 나머지 두 개에는 필드 이름을 정의하는 세 개의 값이 있습니다 그 필드,이PHP로 작업 중이며 다음과 같은 배열 배열이 있습니다.

[Exam1] =>Array 
(
    [2] => Array 
     (
      [class_name] => 10 
      [date] => 2014-03-08 
      [start_time] => 2014-03-26 08:44:15 
      [finish_time] => 2014-03-26 08:44:15 
      [subject] => Maths 
      [exam_details] => Extra comments 
     ) 

    [3] => Array 
     (
      [class_name] => 10 
      [date] => 2014-03-07 
      [start_time] => 2014-03-26 08:44:15 
      [finish_time] => 2014-03-26 08:44:15 
      [subject] => Eng 
      [exam_details] => Extra comments 
     ) 

    [4] => Array 
     (
      [class_name] => 10 
      [date] => 2014-03-06 
      [start_time] => 2014-03-26 08:44:15 
      [finish_time] => 2014-03-26 08:44:15 
      [subject] => Science 
      [exam_details] => Extra comments 
     ) 
) 
[Exam2] =>Array 
(
    [7] => Array 
     (
      [class_name] => 10 
      [date] => 2014-03-08 
      [start_time] => 2014-03-26 08:44:15 
      [finish_time] => 2014-03-26 08:44:15 
      [subject] => Maths 
      [exam_details] => Extra comments 
     ) 

    [8] => Array 
     (
      [class_name] => 10 
      [date] => 2014-03-07 
      [start_time] => 2014-03-26 08:44:15 
      [finish_time] => 2014-03-26 08:44:15 
      [subject] => Eng 
      [exam_details] => Extra comments 
     ) 

    [9] => Array 
     (
      [class_name] => 10 
      [date] => 2014-03-06 
      [start_time] => 2014-03-26 08:44:15 
      [finish_time] => 2014-03-26 08:44:15 
      [subject] => Science 
      [exam_details] => Extra comments 
     ) 

) 
+1

를 원래의 배열을 생성하는 방법은? – Steve

+0

당신은 어떤 종류의 문제가 있습니까? – Michas

+0

첫 번째 행에 Excel 파일을 사용하여 시험 제목이 있고 두 번째 행에 Exam.and 목록보다 필드 이름을 정의하고 하나의 파일에 여러 개의 시험을 추가하고 싶습니다. –

답변

0
// split array into small chunks 
$arrChunked = array_chunk($myArray, 5); 

$formattedArray = array(); 

// loop through array chunk 
foreach ($arrChunked as $arr) 
{ 
    // get titles 
    $title = current($arr); 
    $title = $title[2]; 

    // get key from this title 
    $key = key($arr); 

    // remove title from array 
    unset($arr[$key]); 

    // get the array without titles and append to new formatted array 
    $formattedArray[$title] = $arr; 
} 

참조 같은 시험 제목을 이용하여 어레이를 분할하고 싶다. array_chunk

0

여기에 논리가 있습니다. 테스트하지 않았습니다.

결과를 새로운 배열 ($ array)에 저장하십시오. 좋아

// Generate result set 
$i=0; 
foreach($array as $arr) { 
    if(count($arr)==2) { 
     $i++; 
     $newarray[$i] = array(); 
    } else { 
     foreach($arr as $single){ 
      array_push($newarray[$i], $single); 
     } 
    } 
} 

// New result array 
foreach($newarray as $a_new) { 
    print_r($a_new); 
} 
0

내가 정답을 찾은 것 같아 그 방법 :

$badArray = array(); 
$goodArray = array(); 

$i = FALSE; 
$k = FALSE; 

foreach($badArray as $key=>$value){ 
    if(!empty($value[1] && $value[1] === 'Title')){ 
     $i = TRUE; 
     $k = $value[2]; 
     $goodArray[$value[2]] = []; 
     continue; 
    } 

    if($i == TRUE){ 
     $i = FALSE; 
     $keysArray = $value; 
     continue; 
    } 

    $goodArray[$k][] = array_combine(array_values($keysArray), array_values($value)); 
} 


echo "<pre>"; 

var_dump($goodArray); 

을 시도하지만, 더 나은 그것을 확인 :

+0

고마워 친구 .. –