Monday, 1 May 2017

Sort array of objects using PHP

// Code using Bubble sort


<?php
// Array of objects sort using Bubble sort.

class Student{
   
    //properties
    public $studentName;
    public $rollNumber;
    public $marks1;
    public $marks2;
    public $marks3;
    public $total;
    public $average;
   
    //methods
    function setMarks1($marks1){
         $this->marks1 = $marks1;
      }
    function setMarks2($marks2){
         $this->marks2 = $marks2;
      }
    function setMarks3($marks3){
         $this->marks3 = $marks3;
      }   
    public function total(){           
    $this->total=$this->marks1+ $this->marks2+$this->marks3;   
    return $this->marks1+ $this->marks2+$this->marks3;
    }   
    public function average(){
    $this->average= ($this->marks1+ $this->marks2+$this->marks3)/3;
    return ($this->marks1+ $this->marks2+$this->marks3)/3;
    }
   
}
$s=array();
$s1= new Student();
$s1 -> studentName = 'Student1';
//echo $s1->studentName ."<br>";
$s1 ->rollNumber=1;
$s1->setMarks1(45);
$s1->setMarks2(76);
$s1->setMarks3(78.5);

echo "student1 \n" . $s1->total() ."\n". $s1->average() ."<br>";
$s2= new Student();
$s2 -> studentName = 'Student2';
$s2->setMarks1(27);
$s2->setMarks2(56);
$s2->setMarks3(76);
echo "student2 \n" .$s2->total() . "\n" . $s2->average()."<br>";
$s3= new Student();
$s3-> studentName = 'Student3';
$s3->setMarks1(73);
$s3->setMarks2(89);
$s3->setMarks3(32);
echo "student3 \n" .$s3->total() . "\n" . $s3->average()."<br>";
$s4= new Student();
$s4 -> studentName = 'Student4';
$s4->setMarks1(45);
$s4->setMarks2(45);
$s4->setMarks3(87);
echo "student4 \n" .$s4->total() . "\n" . $s4->average()."<br>";
$s5= new Student();
$s5 -> studentName = 'Student5';
$s5->setMarks1(19);
$s5->setMarks2(22);
$s5->setMarks3(54.5);
echo "student5 \n" .$s5->total() . "\n" . $s5->average()."<br>";
$s6= new Student();
$s6 -> studentName = 'Student6';
$s6->setMarks1(98);
$s6->setMarks2(25);
$s6->setMarks3(65);
echo "student6 \n" .$s6->total() . "\n" . $s6->average()."<br>";
$s7= new Student();
$s7 -> studentName = 'Student7';
$s7->setMarks1(34);
$s7->setMarks2(65);
$s7->setMarks3(32);
echo "student7 \n" .$s7->total() . "\n" . $s7->average()."<br>";
$s8= new Student();
$s8 -> studentName = 'Student8';
$s8->setMarks1(14);
$s8->setMarks2(84);
$s8->setMarks3(72);
echo "student8 \n" .$s8->total() . "\n" . $s8->average()."<br>";

$s9= new Student();
$s9 -> studentName = 'Student9';
$s9->setMarks1(23);
$s9->setMarks2(22);
$s9->setMarks3(76);
echo "student9 \n" .$s9->total() . "\n" . $s9->average()."<br>";

$s10= new Student();
$s10 -> studentName = 'Student10';
$s10->setMarks1(22);
$s10->setMarks2(98);
$s10->setMarks3(43);
echo "student10 \n" .$s10->total() . "\n" . $s10->average()."<br>";


$sortarr = array($s1,$s2,$s3,$s4,$s5,$s6,$s7,$s8,$s9,$s10);
//var_dump($sortarr);
$x=$sortarr[0]->total;
        var_dump($x);
       
echo '<pre>';
 print_r(bubble_sort($sortarr));
echo '</pre>';

function bubble_sort($sortarr){
        // Bubble sorting
        $array_count = count($sortarr);
       
        for($x = 0; $x < $array_count; $x++){
            for($a = 0 ;  $a < $array_count - 1 ; $a++){
                if($a < $array_count ){
                    if($sortarr[$a]->total < $sortarr[$a + 1]->total ){
                            swap($sortarr, $a, $a+1);
                    }
                }
            }
        }
        return $sortarr;   
    }

    function swap(&$arr, $a, $b) {
        $tmp = $arr[$a];
        $arr[$a] = $arr[$b];
        $arr[$b] = $tmp;
    }



?>