PHP Ссылочный массив изнутри себя внутри члена Closure - PullRequest
0 голосов
/ 26 декабря 2018

У меня есть массив с членом Closure, который вызывается в определенный момент во время выполнения и выполняет операции с собственными членами массива.

$a = [];

$a['const'] = 5;

$a['closure'] = function() {
    return ($a['const'] * 2);
};

print_r($a['closure']());

Это дает

NOTICE Undefined variable: a on line number 6
0

Я не уверен, почему $a не работает, поскольку я уже определил его как отдельный оператор перед строкой, которая определяет член Closure.Кажется, я не могу ссылаться на массив изнутри себя, о котором я знаю.

Можно ли это сделать?

Ответы [ 2 ]

0 голосов
/ 26 декабря 2018

Ваш код не работает, потому что вы не передаете переменную $a в анонимную функцию.Вы можете передать переменную $a в функцию с помощью наследования переменных из родительской области (с использованием конструкции use).Например:

$a = [];
$a['const'] = 5;
$a['closure'] = function() use ($a){
    return ($a['const'] * 2);
};

print_r($a['closure']());
0 голосов
/ 26 декабря 2018

Надеюсь, этот код поможет вам.

<?php

$a = [];

$a['const'] = 5;

$a['closure'] = function($a) {
    return ($a['const'] * 2);
};

print_r($a['closure']($a));
...