我有这个数组list()
我想在list($a, $b, $c)
中使用它,我手动$vars
我想知道的是,如果有一个功能只是从$vars = [$a, $b, $c, $d, $e, $f, $g, $h, $i, $j, $k];
list($a, $b, $c, $d, $e, $f, $g, $h, $i, $j, $k);
自动提取它而不是手动提取它
所以而不是
list(extraction($vars)) = ~~~
我只是写这样的东西
$vars
由于3
用于多个场合,其中包含不同的变量计数,因此有时会20
像这里一样,有时1. First
Some text and other stuff
2. Second
Othe stuff
或更多。
答案 0 :(得分:2)
稻草紧紧抓住这里。
基本上如下; 'foo','bar'和'baz'值映射到变量$ a,$ b和$ c。
<?php
function some_func() {
$vals = ['foo', 'bar', 'baz'];
$idxs = array_slice(range('a', 'z'), 0, count($vals));
$vals = array_combine($idxs, $vals);
extract($vals);
unset($vals, $idxs);
var_export(get_defined_vars());
}
some_func();
输出:
array (
'a' => 'foo',
'b' => 'bar',
'c' => 'baz',
)
函数some_func用于减少get_defined_vars(缩小范围)的输出,以显示映射变量。
然而,这感觉就像一个Php反模式。你最好坚持使用键的数组。
答案 1 :(得分:1)
如果没有命名值,您只需将其定义回本地变量表即可。
例如:
$vars = [1];
无法成为$This = 1;
您需要这样做:
$vars = ['This' => 1];
以下是一个示例,说明如何将compact()
变量归类为extract()
:
<?php
$This = 1;
$That = 2;
$Bla = 3;
$Foo = 4;
$Bar = 5;
$vars = ['This', 'That', 'Bla', 'Foo', 'Bar'];
$vars = compact(...$vars);
/*
Array
(
[This] => 1
[That] => 2
[Bla] => 3
[Foo] => 4
[Bar] => 5
)
*/
$vars = extract($vars);
/*
$This = 1;
$That = 2;
$Bla = 3;
$Foo = 4;
$Bar = 5;
*/