Solved

How to pass array to class method in PHP?

Posted on 2014-11-27
4
13 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

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Author Note: Since this E-E article was originally written, years ago, formal testing has come into common use in the world of PHP.  PHPUnit (http://en.wikipedia.org/wiki/PHPUnit) and similar technologies have enjoyed wide adoption, making it possib…
Password hashing is better than message digests or encryption, and you should be using it instead of message digests or encryption.  Find out why and how in this article, which supplements the original article on PHP Client Registration, Login, Logo…
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…
This tutorial will teach you the core code needed to finalize the addition of a watermark to your image. The viewer will use a small PHP class to learn and create a watermark.

867 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

22 Experts available now in Live!

Get 1:1 Help Now