Php foreach 函数问题


Php foreach function problems

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

你可以再做一个简单的爆炸来得到每行的两半。

当您的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
        )
)

警告:split() 从 PHP5.3 开始被弃用

当你想更改 foreach 内数组的值时,您需要遍历其引用:

$data=explode("'n",$g_userselect);
foreach ($data as $key => &$value){
    list($value['quantity'], $value['select']) = explode('|', $value);
}

请注意 $value 之前的&

您必须拆分$value而不是$data并且在那里更好地使用explode(),因为split()自 PHP 5.3 以来DEPRECATED

$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>";
}

.HTML:

<select name="select" id="select">
<?=$options ?>
</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>