. Это довольно просто:
Вот рабочая версия вашего кода:
(async function(){
var response = await superagent.get('...')
console.log(response)
})()
ожидание поддерживается во всех текущих браузерах и узлах 8 [/ д2]
Ниже приведен пример, следующий за синтаксисом имени переменной, который также разрешает элементы массива:
// String that has a value similar to an array key
$string = 'welcome["hello"]';
// initialize variable function (here on global variables store)
$vars = $varFunc($GLOBALS);
// alias variable specified by $string
$var = &$vars($string);
// set the variable
$var = 'World';
// show the variable
var_dump($welcome["hello"]); # string(5) "World"
Со следующей реализацией:
/**
* @return closure
*/
$varFunc = function (array &$store) {
return function &($name) use (&$store)
{
$keys = preg_split('~("])?(\\["|$)~', $name, -1, PREG_SPLIT_NO_EMPTY);
$var = &$store;
foreach($keys as $key)
{
if (!is_array($var) || !array_key_exists($key, $var)) {
$var[$key] = NULL;
}
$var = &$var[$key];
}
return $var;
};
};
Поскольку вы не можете перегружать переменные в PHP, вы ограничены экспрессией PHP здесь, то есть не существует контекста записи для переменных ссылок как значений функции возврата, что требует дополнительного сглаживания:
$var = &$vars($string);
Если что-то вроде этого не в соответствии с вашими потребностями, вам нужно исправить PHP и, если не вариант, PHP не предлагает функции языка, которые вы ищете.
См. также соответствующий вопрос: использовать строки для доступа ( потенциально больших) многомерных массивов .
Вы можете использовать eval, хотя я бы не рекомендовал его в производственной среде, он имеет свои преимущества.
<?
$string = 'welcome["hello"]';
eval('$' . $string . " = 'thisworks';");
// This also works : eval("$$string = 'thisworks';");
// I could then print the array keys value like this
print( $welcome["hello"] ); // Prints 'thisworks'
Нет, вы не можете так поступать. В качестве альтернативы вы можете установить опорную переменную с помощью
$welcomeHello = &$welcome["hello"]
, а затем использовать
$welcomeHello = 'thisworks'
для настройки содержимого элемента.
Это было бы более правильным и даже более быстрый способ установки элементов массива.
В Переменные переменные символы в строке обрабатываются буквально. Они не интерпретируют то, что внутри строки. Таким образом, []
символы в $string
не рассматриваются как запись массива. Скорее, он рассматривается как часть имени переменной.
после выполнения $$string = 'thisworks';
PHP создает переменную с именем welcome["hello"]
буквально со значением, установленным на thisworks
.
Для печати используйте эту нотацию,
print (${'welcome["hello"]'});