PHP-复选框和内爆

PHP-复选框和内爆,php,jquery,checkbox,Php,Jquery,Checkbox,我有多个隐藏的复选框,根据选择,复选框将出现。但是,当我内爆复选框时,它会返回多个逗号,我想使用substr和ifelse根据问题选择删除逗号的数量。这是我的分数 <?php if(isset($_POST['Submit'])) { $QuestionUsed = implode(',', $_POST['QuestionUsed']); $SolutionOffered

我有多个隐藏的复选框,根据选择,复选框将出现。但是,当我
内爆
复选框时,它会返回多个逗号,我想使用
substr
if
else
根据问题选择删除逗号的数量。这是我的分数

            <?php
              if(isset($_POST['Submit'])) {
                $QuestionUsed = implode(',', $_POST['QuestionUsed']);
                $SolutionOffered = implode(',', $_POST['SolutionOffered']);
                echo $QuestionUsed;
                echo "<br>";
                echo $SolutionOffered;
              }
            ?>

              <form action="testing.php" method="post">
                <table class="table">
                  <tbody>
                  <tr>
                    <th>Port-Out Reason</th>
                  </tr>
                  <tr>
                    <td>
                      <select id="portoutselector" name="PortOutQuestions" class="btn-block">
                        <option value=""></option>
                        <option value="PortOut1">Demande de numéro de compte</option>
                        <option value="PortOut2">Intérêt pour offre de la compétition</option>
                        <option value="PortOut3">Demande d’annulation sans vouloir donner une raison</option>
                        <option value="PortOut4">Plainte par rapport au réseau Rogers</option>
                        <option value="PortOut5">Déménagement à l’extérieur du réseau Rogers</option>
                        <option value="PortOut6">Déménagement à l’extérieur du pays</option>
                        <option value="PortOut7">Volonté de renégocier une offre existante au dossier ou de recevoir une offre additionnelle</option>
                        <option value="PortOut8">Déverrouillage d’appareil</option>
                      </select>
                    </td>
                  </tr>
                  <tr>
                    <th>Questions utilisées?</th>
                  <tr>
                  <tr>
                    <td>
                      <div class="PortOut1 unselected" style="display:none">
                        <label class="checkbox"><input type="checkbox" value="1" name="QuestionUsed[]">Pour quelles raisons désirez-vous cette information?</label>
                        <label class="checkbox"><input type="checkbox" value="2" name="QuestionUsed[]">Avez-vous besoin de cette information pour effectuer un paiement?</label>
                        <label class="checkbox"><input type="checkbox" value="3" name="QuestionUsed[]">Êtes-vous entrain vous inscrire à la facturation en ligne?</label>
                        <label class="checkbox"><input type="checkbox" value="4" name="QuestionUsed[]" id="otherbox01">Autres, spécifié:</label>
                        <input type="text" id="Other01" style="display:none" name="QuestionUsed[]">
                      </div>
                      <div class="PortOut2 unselected" style="display:none">
                        <label class="checkbox"><input type="checkbox" value="5" name="QuestionUsed[]">Quelles est l’offre que vous avez reçu d’un autre fournisseur?</label>
                        <label class="checkbox"><input type="checkbox" value="6" name="QuestionUsed[]">Quels sont  les détails de l’offre qui vous intéresse?</label>
                        <label class="checkbox"><input type="checkbox" value="7" name="QuestionUsed[]">Quel est le compétiteur qui vous intéresse?</label>
                        <label class="checkbox"><input type="checkbox" value="8" name="QuestionUsed[]">Quels sont vos besoins?</label>
                        <label class="checkbox"><input type="checkbox" value="9" name="QuestionUsed[]">Quel est votre budget mensuel consacré à vos services sans fil?</label>
                        <label class="checkbox"><input type="checkbox" value="10" name="QuestionUsed[]" id="otherbox02">Autres, spécifié :</label>
                        <input type="text" id="Other02" style="display:none" name="QuestionUsed[]">
                      </div>
                      <div class="PortOut3 unselected" style="display:none">
                        <label class="checkbox"><input type="checkbox" value="11" name="QuestionUsed[]">Il y a-t-il une offre de la compétition qui vous intéresse ?</label>
                        <label class="checkbox"><input type="checkbox" value="12" name="QuestionUsed[]">Êtes-vous satisfait avec Rogers ? (oui/non) Pourquoi?</label>
                        <label class="checkbox"><input type="checkbox" value="13" name="QuestionUsed[]">Êtes-vous au courant de nos offres promotionnelles?</label>
                        <label class="checkbox"><input type="checkbox" value="14" name="QuestionUsed[]" id="otherbox03">Autres, spécifié :</label>
                        <input type="text" id="Other03" style="display:none" name="QuestionUsed[]">
                      </div>
                      <div class="PortOut4 unselected" style="display:none">
                        <label class="checkbox"><input type="checkbox" value="15" name="QuestionUsed[]">Vous expérimentez cet inconvénient depuis quand?</label>
                        <label class="checkbox"><input type="checkbox" value="16" name="QuestionUsed[]">Ce problème arrive partout ou dans un endroit en particulier?</label>
                        <label class="checkbox"><input type="checkbox" value="17" name="QuestionUsed[]">Avez-vous déjà  discuté de cette situation avec le département technique?</label>
                        <label class="checkbox"><input type="checkbox" value="18" name="QuestionUsed[]" id="otherbox04">Autres, spécifié :</label>
                        <input type="text" id="Other04" style="display:none" name="QuestionUsed[]">
                      </div>
                      <div class="PortOut5 unselected" style="display:none">
                        <label class="checkbox"><input type="checkbox" value="19" name="QuestionUsed[]">Dans quelle région déménagez-vous?</label>
                        <label class="checkbox"><input type="checkbox" value="20" name="QuestionUsed[]">Pour combien de temps pensez-vous demeurer à cette adresse?</label>
                        <label class="checkbox"><input type="checkbox" value="21" name="QuestionUsed[]">Comptez-vous réutiliser ce téléphone dans le futur?</label>
                        <label class="checkbox"><input type="checkbox" value="22" name="QuestionUsed[]">Est-ce que vous comptez avoir les services d’un autre fournisseur pendant cette période?</label>
                        <label class="checkbox"><input type="checkbox" value="23" name="QuestionUsed[]" id="otherbox05">Autres, spécifié :</label>
                        <input type="text" id="Other05" style="display:none" name="QuestionUsed[]">
                      </div>
                      <div class="PortOut6 unselected" style="display:none">
                        <label class="checkbox"><input type="checkbox" value="24" name="QuestionUsed[]">Est-ce que le déménagement est pour une période limité (vacances, travail, etc.) ou pour une durée indéterminée?</label>
                        <label class="checkbox"><input type="checkbox" value="25" name="QuestionUsed[]">Considérez-vous revenir au pays dans le futur ?</label>
                        <label class="checkbox"><input type="checkbox" value="26" name="QuestionUsed[]">Est-ce que vous avez un membre de votre famille ou amis restant au pays qui pourrait utiliser votre appareil?</label>
                        <label class="checkbox"><input type="checkbox" value="27" name="QuestionUsed[]" id="otherbox06">Autres, spécifié :</label>
                        <input type="text" id="Other06" style="display:none" name="QuestionUsed[]">
                      </div>
                      <div class="PortOut7 unselected" style="display:none">
                        <label class="checkbox"><input type="checkbox" value="28" name="QuestionUsed[]">Qu’est-ce-qui vous fait douter de l’offre initiale?</label>
                        <label class="checkbox"><input type="checkbox" value="28" name="QuestionUsed[]">Quel aspect de l’offre ne vous satisfait pas?</label>
                        <label class="checkbox"><input type="checkbox" value="30" name="QuestionUsed[]">Il y a t- il une offre de la compétition qui vous intéresse?</label>
                        <label class="checkbox"><input type="checkbox" value="31" name="QuestionUsed[]" id="otherbox07">Autres, spécifié :</label>
                        <input type="text" id="Other07" style="display:none" name="QuestionUsed[]">
                      </div>
                      <div class="PortOut8 unselected" style="display:none">
                        <label class="checkbox"><input type="checkbox" value="32" name="QuestionUsed[]">Pour quelles raisons désirez-vous faire déverrouiller votre appareil?</label>
                        <label class="checkbox"><input type="checkbox" value="33" name="QuestionUsed[]">Êtes-vous satisfait avec votre appareil?</label>
                        <label class="checkbox"><input type="checkbox" value="34" name="QuestionUsed[]">Êtes-vous au courant de nos nouvelles offres?</label>
                        <label class="checkbox"><input type="checkbox" value="35" name="QuestionUsed[]" id="otherbox08">Autres, spécifié :</label>
                        <input type="text" id="Other08" style="display:none" name="QuestionUsed[]">
                      </div>
                    </td>
                  </tr>
                  <tr>
                    <th>Solutions offertes?</th>
                  </tr>
                  <tr>
                    <td>
                      <div class="PortOut1 unselected" style="display:none">
                        <label class="checkbox"><input type="checkbox" value="1" name="SolutionOffered[]">Réviser l’utilisation sans fil des 3 derniers mois et offrir la meilleure solution possible.</label>
                        <label class="checkbox"><input type="checkbox" value="2" name="SolutionOffered[]">Offert au client de l’inscrire à la facturation en ligne.</label>
                        <label class="checkbox"><input type="checkbox" value="3" name="SolutionOffered[]" id="otherbox11">Autres, spécifié :</label>
                        <input type="text" id="Other11" style="display:none" name="SolutionOffered[]">
                      </div>
                      <div class="PortOut2 unselected" style="display:none">
                        <label class="checkbox"><input type="checkbox" value="3" name="SolutionOffered[]">Réviser l'utilisation des 3 derniers mois et lui offrir une offre rétention par rapport à ses besoins.</label>
                        <label class="checkbox"><input type="checkbox" value="4" name="SolutionOffered[]">Forfait Québec à 70$</label>
                        <label class="checkbox"><input type="checkbox" value="5" name="SolutionOffered[]">Offrir des escomptes sur des plans sur le marché</label>
                        <label class="checkbox"><input type="checkbox" value="6" name="SolutionOffered[]">Revendre son plan actuel (client possédant plan rétention ou plan promotionnel</label>
                        <label class="checkbox"><input type="checkbox" value="7" name="SolutionOffered[]" id="otherbox12">Autres, spécifié :</label>
                        <input type="text" id="Other12" style="display:none" name="SolutionOffered[]">
                      </div>
                      <div class="PortOut3 unselected" style="display:none">
                        <label class="checkbox"><input type="checkbox" value="8" name="SolutionOffered[]">Offrir au client de réviser son forfait.</label>
                        <label class="checkbox"><input type="checkbox" value="9" name="SolutionOffered[]">Offrir un offre de bonne foi (si demandé)</label>
                        <label class="checkbox"><input type="checkbox" value="10" name="SolutionOffered[]">Offrir une offre de rétention selon ses besoins</label>
                        <label class="checkbox"><input type="checkbox" value="11" name="SolutionOffered[]" id="otherbox13">Autres, spécifié :</label>
                        <input type="text" id="Other13" style="display:none" name="SolutionOffered[]">
                      </div>
                      <div class="PortOut4 unselected" style="display:none">
                        <label class="checkbox"><input type="checkbox" value="12" name="SolutionOffered[]">Faire une résolution de problème avec le client.</label>
                        <label class="checkbox"><input type="checkbox" value="13" name="SolutionOffered[]">Offrir un OOW si nécessaire.</label>
                        <label class="checkbox"><input type="checkbox" value="14" name="SolutionOffered[]">Offrir un rehaussement d'appareil.</label>
                        <label class="checkbox"><input type="checkbox" value="15" name="SolutionOffered[]" id="otherbox14">Autres, spécifié :</label>
                        <input type="text" id="Other14" style="display:none" name="SolutionOffered[]">
                      </div>
                      <div class="PortOut5 unselected" style="display:none">
                        <label class="checkbox"><input type="checkbox" value="16" name="SolutionOffered[]">Recommandez  un transfert de responsabilité.</label>
                        <label class="checkbox"><input type="checkbox" value="17" name="SolutionOffered[]">Offrir au client une suspension temporaire si nécessaire/offre de dernier recours.</label>
                        <label class="checkbox"><input type="checkbox" value="18" name="SolutionOffered[]" id="otherbox15">Autres, spécifié :</label>
                        <input type="text" id="Other15" style="display:none" name="SolutionOffered[]">
                      </div>
                      <div class="PortOut6 unselected" style="display:none">
                        <label class="checkbox"><input type="checkbox" value="19" name="SolutionOffered[]">Offrir au client une suspension temporaire au dossier.</label>
                        <label class="checkbox"><input type="checkbox" value="20" name="SolutionOffered[]">Offrir au client 50% de rabais pour 6 mois ou 12 mois selon les cas</label>
                        <label class="checkbox"><input type="checkbox" value="21" name="SolutionOffered[]">Offrir au client la meilleure offre possible selon son utilisation au cours des 3 dernier mois</label>
                        <label class="checkbox"><input type="checkbox" value="22" name="SolutionOffered[]" id="otherbox16">Autres, spécifié :</label>
                        <input type="text" id="Other16" style="display:none" name="SolutionOffered[]">
                      </div>
                      <div class="PortOut7 unselected" style="display:none">
                        <label class="checkbox"><input type="checkbox" value="23" name="SolutionOffered[]">Repositionner et revendre la valeur $$ de l’offre déjà présente au dossier.</label>
                        <label class="checkbox"><input type="checkbox" value="24" name="SolutionOffered[]">Faire une nouvelle offre lorsque les besoins du client sont différents du plan déjà offert.</label>
                        <label class="checkbox"><input type="checkbox" value="25" name="SolutionOffered[]">Offrir la migration vers Fido lorsque les conditions requises sont remplies.</label>
                        <label class="checkbox"><input type="checkbox" value="26" name="SolutionOffered[]" id="otherbox17">Autres, spécifié :</label>
                        <input type="text" id="Other17" style="display:none" name="SolutionOffered[]">
                      </div>
                      <div class="PortOut8 unselected" style="display:none">
                        <label class="checkbox"><input type="checkbox" value="27" name="SolutionOffered[]">Offrez au client un nouvel appareil (si la situation le demande).</label>
                        <label class="checkbox"><input type="checkbox" value="28" name="SolutionOffered[]">Offrir offre au client la meilleure possible selon son utilisation au cours des 3 dernier mois</label>
                        <label class="checkbox"><input type="checkbox" value="29" name="SolutionOffered[]" id="otherbox18">Autres, spécifié :</label>
                        <input type="text" id="Other18" style="display:none" name="SolutionOffered[]">
                      </div>
                    </td>
                  </tr>
                  </tbody>
                </table>

                <input type="submit" name="Submit" value="Submit">
              </form>
预期成果:

5,6
3,4

您可以使用trim删除多余的逗号,如:

$QuestionUsed = trim(implode(',', $_POST['QuestionUsed']),',');

您可以使用trim删除多余的逗号,如:

$QuestionUsed = trim(implode(',', $_POST['QuestionUsed']),',');

您可以使用trim删除多余的逗号,如:

$QuestionUsed = trim(implode(',', $_POST['QuestionUsed']),',');

您可以使用trim删除多余的逗号,如:

$QuestionUsed = trim(implode(',', $_POST['QuestionUsed']),',');

如果进行适当的检查,例如:

$QuestionUsed = isset($_POST['QuestionUsed']) && is_array($_POST['QuestionUsed']) ? $_POST['QuestionUsed'] : array();
$SolutionOffered = isset($_POST['SolutionOffered']) && is_array($_POST['SolutionOffered']) ? $_POST['SolutionOffered'] : array();

foreach ($QuestionUsed as $index => $question) {
    if (empty($question)) {
        unset($QuestionUsed[$index]);
    }
}

foreach ($SolutionOffered as $index => $solution) {
    if (empty($solution)) {
        unset($SolutionOffered[$index]);
    }
}

$QuestionUsed = implode(',', $QuestionUsed);
$SolutionOffered = implode(',', $SolutionOffered);
用一个小函数重构将是:

function getCommaSeparatedStringFromArray(array $data = array()) {
    foreach ($data as $key => $value) {
        if (empty($value)) {
            unset($data[$key]);
        }
    }
    return implode(',', $data);
}

$QuestionUsed = isset($_POST['QuestionUsed']) && is_array($_POST['QuestionUsed']) ? $_POST['QuestionUsed'] : array();
$SolutionOffered = isset($_POST['SolutionOffered']) && is_array($_POST['SolutionOffered']) ? $_POST['SolutionOffered'] : array();

$QuestionUsed = getCommaSeparatedStringFromArray($QuestionUsed);
$SolutionOffered = getCommaSeparatedStringFromArray($SolutionOffered);

如果进行适当的检查,例如:

$QuestionUsed = isset($_POST['QuestionUsed']) && is_array($_POST['QuestionUsed']) ? $_POST['QuestionUsed'] : array();
$SolutionOffered = isset($_POST['SolutionOffered']) && is_array($_POST['SolutionOffered']) ? $_POST['SolutionOffered'] : array();

foreach ($QuestionUsed as $index => $question) {
    if (empty($question)) {
        unset($QuestionUsed[$index]);
    }
}

foreach ($SolutionOffered as $index => $solution) {
    if (empty($solution)) {
        unset($SolutionOffered[$index]);
    }
}

$QuestionUsed = implode(',', $QuestionUsed);
$SolutionOffered = implode(',', $SolutionOffered);
用一个小函数重构将是:

function getCommaSeparatedStringFromArray(array $data = array()) {
    foreach ($data as $key => $value) {
        if (empty($value)) {
            unset($data[$key]);
        }
    }
    return implode(',', $data);
}

$QuestionUsed = isset($_POST['QuestionUsed']) && is_array($_POST['QuestionUsed']) ? $_POST['QuestionUsed'] : array();
$SolutionOffered = isset($_POST['SolutionOffered']) && is_array($_POST['SolutionOffered']) ? $_POST['SolutionOffered'] : array();

$QuestionUsed = getCommaSeparatedStringFromArray($QuestionUsed);
$SolutionOffered = getCommaSeparatedStringFromArray($SolutionOffered);

如果进行适当的检查,例如:

$QuestionUsed = isset($_POST['QuestionUsed']) && is_array($_POST['QuestionUsed']) ? $_POST['QuestionUsed'] : array();
$SolutionOffered = isset($_POST['SolutionOffered']) && is_array($_POST['SolutionOffered']) ? $_POST['SolutionOffered'] : array();

foreach ($QuestionUsed as $index => $question) {
    if (empty($question)) {
        unset($QuestionUsed[$index]);
    }
}

foreach ($SolutionOffered as $index => $solution) {
    if (empty($solution)) {
        unset($SolutionOffered[$index]);
    }
}

$QuestionUsed = implode(',', $QuestionUsed);
$SolutionOffered = implode(',', $SolutionOffered);
用一个小函数重构将是:

function getCommaSeparatedStringFromArray(array $data = array()) {
    foreach ($data as $key => $value) {
        if (empty($value)) {
            unset($data[$key]);
        }
    }
    return implode(',', $data);
}

$QuestionUsed = isset($_POST['QuestionUsed']) && is_array($_POST['QuestionUsed']) ? $_POST['QuestionUsed'] : array();
$SolutionOffered = isset($_POST['SolutionOffered']) && is_array($_POST['SolutionOffered']) ? $_POST['SolutionOffered'] : array();

$QuestionUsed = getCommaSeparatedStringFromArray($QuestionUsed);
$SolutionOffered = getCommaSeparatedStringFromArray($SolutionOffered);

如果进行适当的检查,例如:

$QuestionUsed = isset($_POST['QuestionUsed']) && is_array($_POST['QuestionUsed']) ? $_POST['QuestionUsed'] : array();
$SolutionOffered = isset($_POST['SolutionOffered']) && is_array($_POST['SolutionOffered']) ? $_POST['SolutionOffered'] : array();

foreach ($QuestionUsed as $index => $question) {
    if (empty($question)) {
        unset($QuestionUsed[$index]);
    }
}

foreach ($SolutionOffered as $index => $solution) {
    if (empty($solution)) {
        unset($SolutionOffered[$index]);
    }
}

$QuestionUsed = implode(',', $QuestionUsed);
$SolutionOffered = implode(',', $SolutionOffered);
用一个小函数重构将是:

function getCommaSeparatedStringFromArray(array $data = array()) {
    foreach ($data as $key => $value) {
        if (empty($value)) {
            unset($data[$key]);
        }
    }
    return implode(',', $data);
}

$QuestionUsed = isset($_POST['QuestionUsed']) && is_array($_POST['QuestionUsed']) ? $_POST['QuestionUsed'] : array();
$SolutionOffered = isset($_POST['SolutionOffered']) && is_array($_POST['SolutionOffered']) ? $_POST['SolutionOffered'] : array();

$QuestionUsed = getCommaSeparatedStringFromArray($QuestionUsed);
$SolutionOffered = getCommaSeparatedStringFromArray($SolutionOffered);


我建议看一看“拆分”拆分做什么异常重新拆分内爆数组?我建议看一看“拆分”拆分做什么异常重新拆分内爆数组?我建议看一看“拆分”拆分做什么异常重新拆分内爆数组?我建议看一看“拆分”如果拆分为1,,6,,它不会删除中间的逗号,这也是可行的,因为中间没有逗号,但我更喜欢上面的答案,因为它是一个更安全的选择。如果你得到<代码> 1,它不会删除中间逗号,,,6。这个代码也可以使用,因为在这种情况下中间没有逗号,但是我更喜欢上面发布的答案,因为它是一个更安全的选择。如果你得到<代码> 1,6,它不会删除中间逗号。这个代码也可以使用,因为在这种情况下中间没有逗号,但是我更喜欢上面发布的答案,因为它是一个更安全的选择。如果你得到<代码> 1,6,它不会删除中间逗号。。这也可以用,因为在这种情况下中间没有逗号,但是我更喜欢上面的答案,因为它是一个更安全的选择。不错,但是既然这个问题中已经有两个数组了,你就可以把输入的检查和清理打包到一个函数中,以将这段代码的一半归一化,因此,您可以编写类似于
$QuestionUsed=getCheckboxArray('QuestionUsed')$SolutionOffered=getCheckboxArray('SolutionOffered')是的,他可以根据需要进行重构,这只是一个例子:)不,解决方案正在进行:)只是添加了它,没有太多,但应该会做。非常好!这正是我所需要的。@GolezTrol提到一个函数的那一刻,我认为这是个好主意,但你在我之前就这么做了(呵呵:)不错,但因为这个问题中已经有两个数组,你可以将对函数输入的检查和清理打包,以删除一半代码,这样你就可以编写类似于
$QuestionUsed=getCheckboxArray的东西('QuestionUsed');$SolutionOffered=getCheckboxArray('SolutionOffered');
是的,他可以根据需要进行重构,这只是一个例子:)不,解决方案正在进行:)只是添加了它,不多,但应该做。非常好!这正是我所需要的。@GolezTrol提到一个函数的那一刻,我认为这是个好主意,但你在我之前就这么做了(呵呵:)不错,但因为这个问题中已经有两个数组,你可以将对函数输入的检查和清理打包,以删除一半代码,这样你就可以编写类似于
$QuestionUsed=getCheckboxArray的东西('QuestionUsed');$SolutionOffered=getCheckboxArray('SolutionOffered');
是的,他可以根据需要进行重构,这只是一个例子:)不,解决方案正在进行:)只是添加了它,不多,但应该做。非常好!这正是我所需要的。@GolezTrol提到一个函数的那一刻,我认为这是个好主意,但你在我之前就这么做了(呵呵:)不错,但因为这个问题中已经有两个数组,你可以将对函数输入的检查和清理打包,以删除一半代码,这样你就可以编写类似于
$QuestionUsed=getCheckboxArray的东西('QuestionUsed');$SolutionOffered=getCheckboxArray('SolutionOffered');
是的,他可以根据需要进行重构,这只是一个例子:)不,解决方案正在进行:)只是添加了它,不多,但应该做。非常好!这正是我所需要的。@GolezTrol提到函数的那一刻,我认为这是个好主意,但你在我之前就这么做了,呵呵:)