@valentinadikaya

Как вернуть 2 значения в PHP return?

Есть код, который возвращает значение введенное в поле.

public function get_phone( $args = array() ) {

		
		$args = wp_parse_args( $args, array(
			'wrap'  => 'div',
			'class' => '',			
		) );
			
        return  $this->macros_wrap($args, $this->get_meta_html( 'phone' ) ) ;
			
	}


Как сделать так, чтобы перед этим возвращенным значением здесь же возвращалось описание значения, что-то типо этого:

'vell-team-phone' => array(
						'type'        => 'text',
						'label'       => esc_html__( 'Work experience', 'vel-team' ),
					),


Или просто как вставить перед возвращаемым значением тест?
  • Вопрос задан
  • 9651 просмотр
Решения вопроса 1
riky
@riky
Laravel
проще всего некоторые значения возвращать по ссылке

public function get_phone( $args, &$b ) {
        $b = 2;      
        return  1;
  }

$a = get_phone( [], &$b );
echo $a, $b; // 12
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
SerafimArts
@SerafimArts
Senior Notepad Reader
Вариант 1 - Деструктуризация:
// Возврат нескольких значений:
function some() {
    return [23, 42];
}

// Получение
[$a, $b] = some();

\var_dump($a, $b);


Вариант 2 - Деструктуризация с ключами:
// Возврат нескольких значений:
function some() {
    return ['a' => 23, 'b' => 42];
}

// Получение
['a' => $a, 'b' => $b] = some();

\var_dump($a, $b);


Вариант 3 - Генераторы с ключами:
function some() {
    yield 'a' => 23;
    yield 'b' => 42;
}

foreach (some() as $key => $value) {
  echo $key . ':' . $value; // a:23 b:42
}


Вариант 4 - Генераторы без ключей:
function some() {
    yield 23;
    yield 42;
}

foreach (some() as $value) {
  echo $value; // 23 42
}


Вариант 5 - Генераторы с возвратом:
function some() {
    yield 23;
    return 42;
}

$value = some();
echo $value->current(); // 23
$value->next();
echo $value->getReturn(); // 42


Вариант 6 - DTO:
class DataTransferObject
{
    private $a;
    private $b;

    public function __construct($a, $b)
    {
        $this->a = $a;
        $this->b = $b;
    }

    public function getA()
    {
        return $this->a;
    }

    public function getB()
    {
        return $this->b;
    }
}

function some() {
    return new DataTransferObject(23, 42);
}

$value = some();
echo $value->getA(); // 23
echo $value->getB(); // 42


И ещё куча всяких вариантов, но мне влом придумывать уже)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
25 апр. 2024, в 11:20
1000 руб./за проект
25 апр. 2024, в 11:02
5000 руб./за проект
25 апр. 2024, в 10:42
150000 руб./за проект