将数组提取到多个逗号分隔的变量中

时间:2018-02-04 19:53:04

标签: php arrays

我有这个数组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 或更多。

2 个答案:

答案 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;
*/