2

根据我的理解,这就是 list() 的工作方式。

list($A1,$A2,$A3) = array($B1,B2,B3);

因此,在我们的帮助下,list()我们可以相应地从数组中分配值。
这是我的问题......如何生成动态列表()?

1)。基于数据库返回结果,我不确定其中有多少,但我将其全部分配到数组
2)中。所以我们可以使用 count(array) 来知道它有多少。
3)。那么我该如何生成/准备一个列表呢?

示例:客户 A,有 3 个孩子,命名为 Apple、Boy、Cat,所以我使用list($kid1, $kid2, $kid3)它。

但是当客户 B 有 3 个以上的孩子时,我只得到前 3 个,或者如果客户 C 只有 1 个孩子,则会遇到错误。

我知道如果基于上述情况,有很多方法可以在不使用的情况下解决它,list() 但我想知道或找出使用 using 的解决方案list()

如何list()根据计数生成动态基础array()

谢谢伙计们/姑娘们

4

4 回答 4

5

如果您有可变数量的元素,请为它们使用数组!如果您不知道要处理多少个变量,那么将它们提取到单个变量中是没有意义的。$kid1假设您确实通过将这些值提取到变量$kidN中,那么接下来的代码会做什么?$kid1您现在不知道范围内有多少变量,并且在测试是否通过之前,$kidN您没有实用的方法来找出或迭代它们isset。这是对变量的疯狂使用。只需使用数组。

话虽如此,变量变量

$i = 1;
foreach ($array as $value) {
    $varname = 'kid' . $i++;
    $$varname = $value;
}
于 2012-09-23T06:45:16.523 回答
0

这不是 PHP 的list目的。来自官方PHP 文档

list is not really a function, but a language construct. 
list() is used to assign a list of variables in one operation.

换句话说,编译器实际上并没有调用函数,而是直接将您的代码编译为变量和赋值的分配。

  • 您可以通过设置逗号来专门跳到给定元素,如下所示:

    list($var1, , $var2) = Array($B1, B2, B3);

    echo "$var1 is before $var2 \n";

  • 或取第三个元素

    list( , , $var3) = Array($B1, B2, B3);

(我假设 B2,B3 是常数?或者你错过了一个$?)

具体来说list,您可以使用 PHPvariable variables从任意一维数组创建变量,如下所示:

$arr = array("arrindex0" => "apple", "banana", "pear");
reset($arr);
while (list($key, $val) = each($arr)) {
    $key = is_numeric($key) ? "someprefix_" . $key : $key;
    echo "key sdf: $key <br />\n";
    $$key = $val;
}
var_dump($arrindex0, $someprefix_0, $someprefix_1);

结果

string 'apple' (length=5)
string 'banana' (length=6)
string 'pear' (length=4)
于 2012-09-23T06:36:35.817 回答
0

$A1, $A2, .... $AN这会为数组中的每个元素创建变量:

$list =  array("a", "b", "c", "d");

extract(array_combine(array_map(function($i) {
        return "A" . $i;
    }, range(1, count($list))), $list));

echo implode(" ", array($A1, $A2, $A3, $A4)), PHP_EOL;

array_map您可以在回调中修改变量的名称。我希望我永远不会在生产中看到这样的代码;)

于 2012-09-23T06:41:52.870 回答
0

为此,您可以使用create_function()创建 lambda 表达式。list() 只能在表达式中访问。

于 2012-09-23T06:17:54.757 回答