Php foreach功能问题

时间:2016-01-18 14:48:16

标签: php foreach

我在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>

3 个答案:

答案 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>";

}