Цикл Foreach печатает во многие значения - PullRequest
1 голос
/ 01 апреля 2011

обновление, решено

У меня есть следующие 2 массива (с одинаковой длиной), я хочу отобразить эти значения в таблице. Проблема в том, что он печатает только мой первый массив ($ gPositionStudents), а не значения массива $ gPositionInternships. Цель состоит в том, чтобы связать каждого студента с различной стажировкой, но я знаю, что между этими двумя массивами нет никакой связи. Я ищу функцию, которая может сдвигать эти 2 массива так, чтобы каждый раз, когда я пересаживался, студент проходил другую стажировку.

Важно знать, что я сделал небольшую модификацию массива $ gStartPositionInternship, я сделал этот массив равным по размеру длине массива $ gStartPositionStudents. Со следующим кодом: enter code here // Сделать элементы в $ gStartPositionInternships так же долго, как массив $ gStartPositionStudents $ gStartPositionInternships = array_pad ($ internships, $ lengthStudentArray, 'null');

Я включил свой текущий вывод, см. Изображение: enter image description here

enter code here// Make table
$header = array();
$header[] = array('data' => 'Internship');
$header[] = array('data' => 'UGentID');
// this big array will contains all rows
// global variables.
global $gStartPositionStudents;
global $gStartPositionInternships;
$rows = array();
foreach($gStartPositionStudents as $value) {
    foreach($gStartPositionInternships as $key=>$value2) {
        // each loop will add a row here.
        $row = array();
        // build the row
        $row[] = array('data' => $value[0]['value']);
        $row[] = array('data' => $value2);
    }
    // add the row to the "big row data (contains all rows)
    $rows[] = array('data' => $row);
}
$output = theme('table', $header, $rows);
return $output;

var_dump из $ gPositionStudents

 array(148) {
  [0]=>
  array(1) {
    [0]=>
    array(1) {
      ["value"]=>
      string(6) "804868"
    }
  }
  [1]=>
  array(1) {
    [0]=>
    array(1) {
      ["value"]=>
      string(6) "804869"
    }
  }
  [2]=>
  array(1) {
    [0]=>
    array(1) {
      ["value"]=>
      string(6) "705169"
    }
  }
  [3]=>
  array(1) {
    [0]=>
    array(1) {
      ["value"]=>
      string(6) "805148"
    }
  }
  [4]=>
  array(1) {
    [0]=>
    array(1) {
      ["value"]=>
      string(6) "702342"
    }
  }
  [5]=>
  array(1) {
    [0]=>
    array(1) {
      ["value"]=>
      string(6) "803176"
    }
  }
  [6]=>
  array(1) {
    [0]=>
    array(1) {
      ["value"]=>
      string(6) "706651"
    }
  }
  [7]=>
  array(1) {
    [0]=>
    array(1) {
      ["value"]=>
      string(6) "706333"
    }
  }
  [8]=>
  array(1) {
    [0]=>
    array(1) {
      ["value"]=>
      string(6) "806026"
    }
  }
  [9]=>
  array(1) {
    [0]=>
    array(1) {
      ["value"]=>
      string(6) "702808"
    }
  }

var_dump of: $ gPositionInternships

array(148) {
  [0]=>
  string(18) "Pcv (campus Aalst)"
  [1]=>
  string(53) "Mss ( Privaatpraktijk kinesitherapie Walravens Marc )"
  [2]=>
  string(54) "Mss ( Privaatpraktijk kinesitherapie Peeters Stefaan )"
  [3]=>
  string(35) "psychiatrie (campus Vercruysselaan)"
  [4]=>
  string(39) "interne geneeskunde (campus Loofstraat)"
  [5]=>
  string(40) "interne geneeskunde (campus Kennedylaan)"
  [6]=>
  string(29) "heelkunde (campus Loofstraat)"
  [7]=>
  string(30) "heelkunde (campus Kennedylaan)"
  [8]=>
  string(33) "heelkunde (campus Vercruysselaan)"
  [9]=>
  string(38) "logopedie (groepspraktijk Logomatopee)"
  [10]=>
  string(41) "logopedie (Koninklijk Instituut Spermali)"
  [11]=>
  string(34) "Fysieke activiteit (To Walk Again)"
  [12]=>
  string(53) "algemene en plastische heelkunde ( AZ AZ Oudenaarde )"
  [13]=>
  string(38) "dermatologie (campus Maria Middelares)"
  [14]=>
  string(29) "NKO (campus Maria Middelares)"
  [15]=>
  string(38) "dermatologie (campus Maria Middelares)"
  [16]=>
  string(38) "Fysieke activiteit (Beweegkamp Vlabus)"
  [17]=>
  string(43) "Hoofdverpleegkundige ( UZ UZ Gent Urologie)"
  [18]=>
  string(66) "Opleidingscoördinator ( Onderwijsinstelling Arteveldehogeschool )"
  [19]=>
  string(90) "Verpleegkundig Specialist ( UMC Universitair Medisch Centrum Universitair Medisch Centrum)"
  [20]=>
  string(31) "Mss ( AZ Nikolaas campus Hamme)"
  [21]=>
  string(74) "Mss ( Privaatpraktijk kinesitherapie Cuigniez Pascale PR Cuigniez Pascale)"

Ответы [ 2 ]

1 голос
/ 01 апреля 2011
Назначение

$ row [] находится во вложенном цикле - мне это кажется подозрительным.Попробуйте поместить это назначение после вложенного цикла, например:

foreach($studentUGentID as $key=>$value) {
    foreach($internshipNaam as $key2=>$value2) {
    ...
    }
    // add the row to the "big row data (contains all rows)
    $rows[] = array('data' => $row);
}
0 голосов
/ 01 апреля 2011

Заполнены ли ваши исходные массивы, как ожидалось?Попробуйте print_f, чтобы понять это.Насколько я вижу, если в ваших исходных массивах есть 2 записи, вы должны получить массив из 4 записей, например:

$rows = array(
    [0] => array(
        'data' => array(
            [0] => array(
                'data' => value
            ),
            [1] => array(
                'data' => value
            )
    ),
    [1] => array(
        'data' => array(
            [0] => array(
                'data' => value
            ),
            [1] => array(
                'data' => value
            )
    ),
    [2] => array(
        'data' => array(
            [0] => array(
                'data' => value
            ),
            [1] => array(
                'data' => value
            )
    ),
    [3] => array(
        'data' => array(
            [0] => array(
                'data' => value
            ),
            [1] => array(
                'data' => value
            )
        )
    )
)

Это действительно то, что вы ожидаете?

...