2016-05-04 2 views
0

Ich möchte die Werte, die ich von foreach-Schleife in ein Array erhalten, zuweisen oder speichern, so dass ich Array-Sortierfunktion für die Werte verwenden kann. Bitte unten ist mein Code. Es scheint ein ganz neues Array für jede Schleife mit Schlüssel = 0 zu erstellen. Und wenn ich die Druckanweisung unterhalb der Schleife plaziere, wird nur der letzte Wert angezeigt, der von der Schleife erhalten wurde. Ich verstehe nicht, wie es in This QuestionWie ordne ich Werte von einer Schleife zu Array

<?php 

    $studen_id = $this->db->get_where('student' , array('class_id' => $class_id))->result_array(); 
    foreach($studen_id as $row){ 
    $mark_obtained = $this->crud_model->get_exam_total($row2['exam_id'] , $class_id , $row['student_id']); 

     $student_mark = array($mark_obtained); 

     // rsort($student_mark); 

     echo "<li>"; print_r($student_mark); echo "</li>"; 

    } 
?> 

Ausgabe ARRAY

Antwort

4

Sie müssen [] hinzufügen erklärt wurde richtige Anordnung zu erzeugen. Versuchen Sie folgendes:

<?php 
    $studen_id = $this->db->get_where('student' , array('class_id' => $class_id))->result_array(); 
    $student_mark = array(); 
    foreach($studen_id as $row){ 
    $mark_obtained = $this->crud_model->get_exam_total($row2['exam_id'] , $class_id , $row['student_id']); 
    $student_mark[] = $mark_obtained; 
    } 
?> 
+0

3 richtige Antworten, aber „Schnellste im Westen“ bekommt meine Stimme :-) – MonkeyZeus

+0

hahaha .. wahr das ist :) –

+0

Auch pro OPs Frage, ich empfehle ein Beispiel für die Verwendung einer Sortierfunktion nach der 'foreach()' - Schleife. – MonkeyZeus

3

Erstellen Sie ein leeres Array außerhalb der Schleife:

$Array = array(); 

Innerhalb der Schleife die Werte hinzufügen:

$Array[] = $mark_obtained; 

Nach dem Ende der Schleife testen Sie Ihr Array:

print_r($Array); 
+0

Danke Jungs für alle Antworten, die es geklappt hat. Im dankbar – 4Jean

1

Um nur ein Array zu erstellen, verwenden Sie diese Form:

$student_mark = array(); 
foreach($studen_id as $row){ 
$mark_obtained = ...... 
    $student_mark[] = $mark_obtained; 
    .... 
1

Versuchen zu verwenden array_push(). Beispiel:

<?php 
    $student_mark = array(); 
    $studen_id = $this->db->get_where('student' , array('class_id' => $class_id))->result_array(); 

    foreach($studen_id as $row){ 
     $mark_obtained = $this->crud_model->get_exam_total($row2['exam_id'] , $class_id , $row['student_id']); 

     array_push($student_mark, $mark_obtained); 

     // rsort($student_mark); 

     echo "<li>"; print_r($student_mark); echo "</li>"; 
    } 
?> 

$student_marks ist nun ein flaches Array ...

Grüßen.

+0

Ahem, sollte es nicht sein? Array_push ($ student_mark, $ mark_obtetained); '? – MonkeyZeus

+0

Sorry, ich bearbeite meinen Beitrag, um array_merge zu verwenden ... Sie sprechen über die array() Funktion, yeah Kopieren/Einfügen Fehler;). –

+0

'$ mark_obtetained' ist kein Array, also wird 'array_merge()' einen Fehler erzeugen ... – MonkeyZeus

1

Ich denke, das ist, was Sie wollen ...

$student_mark =array(); 
$studen_id = $this->db->get_where('student' , array('class_id' => $class_id))->result_array(); 
foreach($studen_id as $row) 
{ 
    $mark_obtained = $this->crud_model->get_exam_total($row2['exam_id'] , $class_id , $row['student_id']); 
    $student_mark[] = $mark_obtained;   
} 

sort($student_mark); 
$arrlength = count($student_mark); 

for($x = 0; $x < $arrlength; $x++) 
{ 
    echo "<li>".$student_mark[$x]."</li>"; 
} 
Verwandte Themen