声明动态变量拉拉维尔



我的问题是下一个问题。 我想做这个:

<?
$item1='';
$item2='';
//etc..
?>

但像这样:

foreach ($cart as $item) {
foreach ($item as $key => $value) {
//so if foreach current is 3 to be $item3=new Item(); etc..
$item1 = new Item();
$item1->setName('Ground Coffee 40 oz')
->setCurrency('USD')
->setQuantity(1)
->setSku("123123") // Similar to `item_number` in Classic API
->setPrice(7.5);
}
}

所以我希望,你能明白我想要什么吗? 谢谢

您可以使用变量变量动态创建变量。
http://php.net/manual/en/language.variables.variable.php

如果我理解您的问题和代码正确,这应该是这样做的方法:

foreach ($cart as $item) {
foreach ($item as $key => $value) {
//so if foreach current is 3 to be $item3=new Item(); etc..
${"item" . $key} = new Item();
${"item" . $key}->setName('Ground Coffee 40 oz')
->setCurrency('USD')
->setQuantity(1)
->setSku("123123") // Similar to `item_number` in Classic API
->setPrice(7.5);
}
}

请看这里的例子:https://3v4l.org/VUHXS


在我看来,这不是解决问题的好方法。
您可能应该改用数组。

像这样创建新变量的问题在于你不知道它的终点在哪里。
是一件还是50件?
这不是世界末日,你可以这样管理:

While(isset(${"item" . $i})){
Echo ${"item" . $i};
$i++;
}

它将与for或foreach一样好,但更难调试。
使用数组,您只需var_dump它并查看内容即可。
对于单个变量,它稍微困难一些。

像这样尝试

$itemArray=[];
foreach ($cart as $item) {
foreach ($item as $key => $value) {
//so if foreach current is 3 to be $item3=new Item(); etc..
$item1 = new Item();
$item1->setName('Ground Coffee 40 oz')
->setCurrency('USD')
->setQuantity(1)
->setSku("123123") // Similar to `item_number` in Classic API
->setPrice(7.5);
$itemArray[]=$item1;
}
}

最新更新