【问题标题】:issiues with the value of the multidropdown php多下拉php值的问题
【发布时间】:2013-11-27 21:54:57
【问题描述】:

这是我的多下拉菜单

<select style="width:250px"name="locatie[]"id="contact" data-    
    placeholder="contactpersoon" class="chosen-select" id="e9"multiple tabindex="4"> 
        <option value=""></option> 
        <option value="United States, aaa, bbb, ccc">United States</option> 
        <option value="United Kingdom">United Kingdom</option> 
        <option value="Afghanistan">Afghanistan</option>
</select>

这是我的 php 代码

$arr = $_POST["contact"];
reset($arr);
while (list(, $value) = each($arr)) {
    echo "Value: $value<br />\n";
}

当我选择所有选项时,

输出

值:美国、aaa、bbb、ccc

值:英国

价值:阿富汗

我怎样才能将第一个值(美国、aaa、bbb、ccc)分开到

值:美国

值:aaa

值:bbb

值:ccc

值:英国

价值:阿富汗

【问题讨论】:

  • 为什么首先需要这样做,为什么列表中有这样的值?它看起来格式不正确,不是吗?
  • 我想用while循环插入mysql

标签: php arrays forms


【解决方案1】:

看这里:Can an Option in a Select tag carry multiple values?

您可以尝试使用 JSON 数组而不是逗号分隔的列表。

【讨论】:

    【解决方案2】:

    你需要先遍历数组,拆分字符串并将所有值添加到一个新数组中:

    <?php
    
    $original = $_POST['contact'];
    $output = array();
    
    reset($original);
    
    foreach($original as $value) {
        if(strpos($value, ',') === false)
            $output[] = $value; // add value straight away if it doesn't need splitting
        else {
            // split string by comma and trim whitespace from pieces
            $bits = explode(',', $value);
            foreach($bits as $bit) {
                $output[] = trim($bit);
            }
        }
    }
    
    // now loop through $output array to get desired result:
    foreach($output as $value) {
        echo "Value: " . $value . "<br>\n";
    }
    ?>
    

    【讨论】:

    • 打我一拳;)
    【解决方案3】:

    我不太确定我是否遵循您想要和需要的内容,但是要将第一个值分成单独的项目并按照您展示列表的顺序列出它们,您应该拆分和修剪代表您的第一个值的字符串值... while 在 while 循环中...

    要使用字符串拆分字符串,您可以查看 PHP 中的函数 explode

    http://us3.php.net/manual/en/function.explode.php
    

    要修剪,看看这个

    http://php.net/manual/en/function.trim.php
    

    您的字符串“United States, aaa, bbb, ccc”必须用逗号字符“,”分割,然后分割数组的元素必须被修剪以去除它们前面的空白。就代码而言,我会给你一些伪代码,你可以根据需要进行调整。

      $arr = $_POST["contact"];
      reset($arr);
    
      while (list(, $value) = each($arr)) {
    
          // when you split the string you get an array and if the number of elements in an array is more then 1 that means your string contains a comma.. You split a string into subvalues and echo them in a loop...
    
          if (count(explode(",", $value)) > 1) { 
    
              $subvalues = explode(",", $value);
              foreach ($subvalue in $subvalues){ 
              echo "Value: trim($subvalue)<br />\n"; 
              }    
          } else {
              echo "Value: $value<br />\n";
          }
    
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-23
      • 1970-01-01
      • 1970-01-01
      • 2014-05-28
      • 1970-01-01
      相关资源
      最近更新 更多