【问题标题】:How to concat foreach loop with string in php [duplicate]如何在php中使用字符串连接foreach循环[重复]
【发布时间】:2019-02-06 11:53:19
【问题描述】:

如何像这样在 PHP 中将 foreach 循环与字符串连接起来

$traning [] = '<tr>
    <td style="width:30%" id="trainingCode_' . $key + 1 . '">
    <select class="select2 form-control" data-live-search= "true" name="trainingCode[]">
        <option value="0">SELECT CODE</option>'.
        foreach ($code=0 as $row) {
            //
        }
    .'</select>
    </td>
   </tr>';

【问题讨论】:

    标签: php foreach concatenation


    【解决方案1】:

    将代码拆分为每个人都清楚的部分:

    $trContent = '<tr>
        <td style="width:30%" id="trainingCode_' . $key + 1 . '">
        <select class="select2 form-control" data-live-search= "true" name="trainingCode[]">
            <option value="0">SELECT CODE</option>';
    
    // iterate over array and append to `$trContent`
    foreach ($code as $row) {
        $trContent .= '<option></option>';
    }
    
    $trContent .= '</select>
        </td>
       </tr>';
    
    $traning [] = $trContent;
    

    【讨论】:

    • 兄弟,请修改此行'&lt;option&gt;&lt;/option&gt;' 我也添加了我的答案并提出了一些建议。
    【解决方案2】:

    您的代码中存在一些问题:

    问题1:你不能像变量一样concat函数,你只需要破坏你的代码并存储在一个变量中然后使用Concat,否则,这会给你解析错误。

    问题2:不知道你为什么在你的foreach中使用$code=0 as $row,这会给你Invalid argument错误。

    问题 3: 这只是我的假设,根据 id="trainingCode_' . $key + 1 . '",您在循环中使用此代码,如果是,那么这部分 name="trainingCode[]" 在您获取时也会产生问题记录,你怎么知道正确的关系?

    您的代码示例:

    <?php
    $myString = '<tr>
        <td style="width:30%" id="trainingCode_' . $key + 1 . '">
        <select class="select2 form-control" data-live-search= "true" name="trainingCode[]">
            <option value="0">SELECT CODE</option>';
    
    // use your foreach loop here
    foreach ($code as $row) {
        $myString .= '<option value="'.$row.'">'.$row.'</option>'; // contact wit  $myString
    }
    
    $myString .= '</select></td></tr>';
    $traning[] = $myString;
    ?>
    

    【讨论】:

    • 绝对没有任何价值(永远)将选项的文本复制为value 属性值。只需使用...&lt;option&gt;' . implode('&lt;/option&gt;&lt;option&gt;', $code) . '&lt;/option&gt;...
    【解决方案3】:

    字符串中的 Foreach 循环不是最好的方法。但是字符串中的字符串。

    $options = "";
    foreach ($rows as $code) {
      $options .= '<option value="'.$code '">' . $code . '</option>';
    }
    $traning [] = '<tr>
        <td style="width:30%" id="trainingCode_' . $key + 1 . '">
        <select class="select2 form-control" data-live-search= "true" name="trainingCode[]">
            <option value="0">SELECT CODE</option>'. $options .
        '</select>
        </td>
       </tr>';
    

    【讨论】:

    • 绝对没有任何价值(永远)将选项的文本复制为value 属性值。只需使用...&lt;option&gt;' . implode('&lt;/option&gt;&lt;option&gt;', $code) . '&lt;/option&gt;...
    【解决方案4】:

    你可以这样做:

    $options = "";
    foreach ($code=0 as $row) {
        $options .= "<option value='$code'>Code</option>";
    }
    
    $traning [] = '<tr>
    <td style="width:30%" id="trainingCode_' . $key + 1 . '">
    <select class="select2 form-control" data-live-search= "true" name="trainingCode[]">
        <option value="0">SELECT CODE</option>'.
        $options
    .'</select>
    </td>
    </tr>';
    

    【讨论】:

    • 硬编码文本Code 会让用户很难准确地知道他们正在选择哪个值,因为所有选项都将具有相同的可见文本。
    【解决方案5】:
    $htmlToConcat = "";
     foreach ($code=0 as $row) {
            $htmlToConcat .= "";
        }
    
    
    $traning [] = '<tr>
        <td style="width:30%" id="trainingCode_' . $key + 1 . '">
        <select class="select2 form-control" data-live-search= "true" name="trainingCode[]">
        <option value="0">SELECT CODE</option>'.$htmlToConcat.'</select>
    </td>
    </tr>';
    

    【讨论】:

    • 这篇纯代码帖子不会产生任何额外的&lt;option&gt; 标签。低质量的答案,匆忙的答案。
    猜你喜欢
    • 1970-01-01
    • 2021-11-13
    • 2021-05-12
    • 2019-12-07
    • 2019-12-29
    • 1970-01-01
    • 1970-01-01
    • 2017-01-20
    • 2023-03-21
    相关资源
    最近更新 更多