Solved

How to pass array to class method in PHP?

Posted on 2014-11-27
4
8 Views
Last Modified: 2016-05-25
I'm currently looking to create a class to handle basic calculations. Can't seem to pass an array to the class assomething in my syntax is not right:
<?php

include "fin_class.php";

$subject1 = 10;
$subject2 = 2;
$subject_array= array(3, 5, 12);

$calculator = new calc;

$result = $calculator->add($subject1, $subject2, $subject_array);

echo $result;
?>

Open in new window


Heres the class:
<?php

class calc {

	var $amount1,
	    $amount2,
	    $array_amounts,
	    $vat_amt,
	    $vat_perc,
	    $nrl_amt,
	    $total,
	    $sub_total;

	    function add($amount1, $amount2, $array_amounts){
	    	if(isset($this->$array_amounts)){
	    		$total = array_sum($this->$array_amounts);
	    			    	} else {
	    	    $total = $amount1 + $amount2;
	    	}

	    	return $total;

	    }
}

Open in new window


I want the method to add two values, but occasionally there are more than two values and in this case they will be in the form of an array. The idea is to total the values in the array when it has values assigned to it.

I did think about just using an array regardless of the number of values and adding the values in the array. Perhaps there is a case to be made for a method that totals the values in an array instead of relying on the add method?
0
Comment
Question by:Mulith
  • 2
4 Comments
 
LVL 16

Accepted Solution

by:
Chris Harte earned 500 total points
ID: 40469583
Check your syntax, it is $this->array_amounts. Which is not the problem anyway. Use the local scope of the arguments. And if you are using isset, you should use the first element of the array

        function add($amount1, $amount2, $array_amounts)
        {
            if(isset($array_amounts[0]))
            {
                $total = array_sum($array_amounts);
            } 
            else 
            {
                $total = $amount1 + $amount2;
            }

            return $total;

        }

Open in new window

0
 
LVL 108

Expert Comment

by:Ray Paseur
ID: 40469732
I think your instincts are good about placing all of the values you want to sum up into an array.  That would be the expected design pattern.  And you don't need OOP for this at all.  You can use array_sum() to get the answer in a single instruction.

If you're interested in learning PHP object-oriented programming, start your adventure here:
http://php.net/manual/en/language.oop5.php

In particular, try to stay away from internet examples.  The "good work" in PHP OOP design and programming is being done in systems like Laravel, and it's all very, very new in PHP.  An unfortunately large amount of really bad PHP code is lying around on the internet, so check the publication dates and steer yourself away from anything more than a year or two old.
0
 
LVL 108

Expert Comment

by:Ray Paseur
ID: 41615796
For anyone who comes across this question in the future, please take note of the author's statement here:
Perhaps there is a case to be made for a method that totals the values in an array instead of relying on the add method?
The solution is found in using array_sum(), a PHP built-in function.  No other code is needed at all.
0

Featured Post

Enabling OSINT in Activity Based Intelligence

Activity based intelligence (ABI) requires access to all available sources of data. Recorded Future allows analysts to observe structured data on the open, deep, and dark web.

Join & Write a Comment

Suggested Solutions

Foreword (July, 2015) Since I first wrote this article, years ago, a great many more people have begun using the internet.  They are coming online from every part of the globe, learning, reading, shopping and spending money at an ever-increasing ra…
Since pre-biblical times, humans have sought ways to keep secrets, and share the secrets selectively.  This article explores the ways PHP can be used to hide and encrypt information.
Learn how to match and substitute tagged data using PHP regular expressions. Demonstrated on Windows 7, but also applies to other operating systems. Demonstrated technique applies to PHP (all versions) and Firefox, but very similar techniques will w…
The viewer will learn how to dynamically set the form action using jQuery.

746 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now