Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP将JSON解码为selectmenu选定选项_Php_Arrays_Json_Select - Fatal编程技术网

PHP将JSON解码为selectmenu选定选项

PHP将JSON解码为selectmenu选定选项,php,arrays,json,select,Php,Arrays,Json,Select,我想选择选项,我尝试了很多方法,当我从列表中选择一个选项并按submit后,selectmenu指向第一个元素,这使得我选择的选项实际上没有被选中。我无法发送用户选择的内容 <?php $operatorsAndPackages = $_SESSION['outputOperatorsAndPackages']; $json_a = json_decode($operatorsAndPackages,true); ?> <label>Paquet :

我想选择选项,我尝试了很多方法,当我从列表中选择一个选项并按submit后,selectmenu指向第一个元素,这使得我选择的选项实际上没有被选中。我无法发送用户选择的内容

<?php 
    $operatorsAndPackages = $_SESSION['outputOperatorsAndPackages'];
    $json_a = json_decode($operatorsAndPackages,true);
?>

<label>Paquet : Opérateur : Montant</label><br/>

<select id="recharge_operator" name="recharge_operator">
<?php foreach ($json_a as $value): ?>       
    <?php echo $value; ?>
    <option value="<?php echo $value[paquet_id] . ":" . $value[code_operateur] . ":" . $value[montant_recharge]; ?>"><?php echo $value[paquet_id] . ":" . $value[code_operateur] . ":" . $value[montant_recharge]; ?></option>
<?php endforeach ?>
</select>

您需要查看提交的值,我将假设这是代码示例中的一个POST操作,并将其与循环中的每个组合值进行比较,以确定当前值是否与提交的值相同。如果是,则设置选项元素的选定属性

以下代码示例的第13行和第16行是最相关的更改

<?php 
    $operatorsAndPackages = $_SESSION['outputOperatorsAndPackages'];
    $json_a = json_decode($operatorsAndPackages,true);
?>

<label>Paquet : Opérateur : Montant</label><br/>

<select id="recharge_operator" name="recharge_operator">
<?php
    foreach ($json_a as $value)
    {
        $value = $value['paquet_id'] . ":" . $value['code_operateur'] . ":" . $value['montant_recharge'];
        $selected = ($value === $_GET['recharge_operator']);
        $html_safe_value = htmlentities($value);
?>
    <option value="<?php echo $html_safe_value; ?>"<?php if ($selected) {?> selected="selected"<?php } ?> >
        <?php echo $html_safe_value; ?>
    </option>
<?php
    }
?>
</select>

我有一个源代码的快速演示,位于:

它指向菜单中的最后一个元素,没有选择任何内容。我不理解这个评论。我建议您通过转储$\u GET值进行调试,并在循环中转储每个$value以查看比较结果。@Lotus91,很抱歉,我在我向您提出的建议中发现了问题。我正在为所有元素输出一个选定的属性,如果存在,浏览器将对其进行操作,而不考虑它持有的值。我已将答案调整为只输出匹配答案的属性。@Lotus91我对答案的编辑是否使您离期望的目标更近了?不,我仍然有同样的问题,我无法选择任何选项