Как я могу вернуть несколько значений из функции отдельно - PullRequest
0 голосов
/ 04 апреля 2019

Так что проблема довольно проста, мне нужно вернуть несколько значений из функции, кто-нибудь может подсказать, как я это делаю?Код ниже:

<?php

abstract class Products
{

    protected $name;
    protected $price;

    public function __construct($name, $price)
    {
        $this->name = $name;
        $this->price = $price;
    }

    public function getName()
    {
        return $this->name;
    }

    public function getPrice()
    {
        return $this->price;
    }
}

// A new class extension

class Furniture extends Products
{

    protected $width;
    protected $height;
    protected $length;

    public function getSize()
    {
        // return $this->width;
        // return $this->height;
        // return $this->length;
        // return array($this->width, $this->height, $this->length);
    }
}

Итак, насколько я понимаю, когда я возвращаю что-то, это останавливает функцию, поэтому я понимаю, почему я не могу просто сделать возвращение 3 раза.Попытка вернуть массив не сработала с ошибкой «Примечание: преобразование массива в строку».

Может кто-нибудь сообщить мне, как я могу вернуть все 3 из них?

1 Ответ

1 голос
/ 04 апреля 2019

Если вы измените свою функцию, чтобы она возвращала массив следующим образом:

class Furniture extends Products
{

    protected $width;
    protected $height;
    protected $length;

    public function getSize()
    {
        return [
            'width' => $this->width,
            'height' => $this->height,
            'length' => $this->length
        ];
    }
}

Затем вы можете получить доступ к своим данным следующим образом:

$furniture = new Furniture;
$size = $furniture->getSize();

$height = $size['height'];

Возвращение нескольких значений данных массивом - довольно распространенная вещь. Другим методом будет использование stdClass, который в этом случае будет иметь почти такой же результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...