我在php中使用foreach函数时遇到了麻烦。我搜索一些教程,但仍然无法理解它是如何工作的。请有人帮助我。
我有一个textarea
字符串,这个字符串是$g_userselect
。
+----------------+
| 1000|10 |
| 2000|40 |
| 3000|80 |
+----------------+
我想将其分为<form><select>
函数。
<select name="select" id="select">
<option value="1000">Cost 10</option>
<option value="2000">Cost 40</option>
<option value="3000">Cost 80</option>
</select>
我喜欢这个:
$data=explode("\n",$g_userselect);
foreach ($data as $key => $value){
list($value['quantity'], $value['select']) = split ('|', $data);
}
像这样循环:
<select name="select" id="select">
<!--{loop $data $value}-->
<option value="{$value[quantity]}">Cost {$value[select]}</option>
<!--{/loop}--></select>
但只向我展示:
<select name="select" id="select">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
答案 0 :(得分:1)
你可以做另一个简单的爆炸来获得每一行的两半。
当你的foreach创建一个名为$value
的变量并且你的list()
正在试图将数据加载到名为$value
的数组时,你也会遇到问题。 foreach外观创建的$value
是瞬态的,即每次围绕foreach循环重复使用。
$newvalues = array();
$data=explode("\n",$g_userselect);
foreach ($data as $key => $value){
$bits = explode('|',$value);
$t = array('quantity' => $bits[0], 'select' => $bits[1]);
$newvalues[] = $t;
}
print_r($newvalues);
给出这个结果
Array
(
[0] => Array
(
[quantity] => 1
[select] => 1000
)
[1] => Array
(
[quantity] => 2
[select] => 2000
)
[2] => Array
(
[quantity] => 3
[select] => 3000
)
)
警告:自PHP5.3起,不推荐使用split()
答案 1 :(得分:-1)
如果要更改foreach
内的数组值,
你需要循环它的引用:
$data=explode("\n",$g_userselect);
foreach ($data as $key => &$value){
list($value['quantity'], $value['select']) = explode('|', $value);
}
请注意&
之前的$value
。
您必须拆分$value
而不是$data
,并在那里更好地使用explode()
,因为自PHP 5.3以来split()
为DEPRECATED
答案 2 :(得分:-1)
MockProjectService
HTML:
constructor(project: ProjectService) {
输出:
$g_userselect = array('1000|10', '2000|40', '3000|80');
foreach ($g_userselect as $k => $v){
$a = explode('|', $v);
$options = "<option value=$a[0]>Cost $a[1]</option>";
}