Php 从html提交表单发布多个值

Php 从html提交表单发布多个值,php,html,json,Php,Html,Json,我试图使用一个HTML提交,它是从SQL数据库的关联数组填充的,但是我希望传递多个值,而不是通常的1。我已经尝试在值中使用JSON和变量,然后稍后解码JSON以检索单个变量 <select name="name"> <?php foreach($array as $vals){ echo '<option value={"a":".'$vals['1']'.","b":".'$vals['2']'.","c":".'$vals['3']'.","d":".'$vals

我试图使用一个HTML提交,它是从SQL数据库的关联数组填充的,但是我希望传递多个值,而不是通常的1。我已经尝试在值中使用JSON和变量,然后稍后解码JSON以检索单个变量

<select name="name">
<?php
foreach($array as $vals){
  echo '<option value={"a":".'$vals['1']'.","b":".'$vals['2']'.","c":".'$vals['3']'.","d":".'$vals['4']'."}>Option Name</option>';
}?>
</select>
问题是“x”y,我希望它是“x”


有人知道我如何解决这个问题吗?或者有没有其他方法可以达到同样的效果?

我会将JSON构建为一个PHP数组,然后您可以使用base64_encode(JSON_encode())数组。这将更易于阅读,并且您不必担心此解决方案的其他边缘情况。

您需要在
属性周围加引号,以便空格不会终止它。还可以使用
htmlentities()
对其他特殊字符进行编码

另外,不要手动构造JSON,请使用
JSON\u encode()

foreach($vals形式的数组){
$obj=[“a”=>$VAL[1],“b”=>$VAL[2],“c”=>$VAL[3],“d”=>$VAL[4];
$json=htmlentities(json_encode($obj));
回显“选项名称”;
}

检查.和的位置

echo '<option value={"a":".'$vals['1']'.","b":".'$vals['2']'.","c":".'$vals['3']'.","d":".'$vals['4']'."}>Option Name</option>';
echo“选项名称”;
纠正

echo '<option value={"a":"'.$vals['1'].'","b":"'.$vals['2'].'","c":"'.$vals['3'].'","d":"'.$vals['4'].'"}>Option Name</option>';
echo“选项名称”;

“在其中一个选项的字符串中有空格之前,它会按预期工作”-尝试
trim()
它或
preg_replace()
。旁注:
不是有效的结束标记。抱歉,我是说选择。查看{“a”:“x”y,“b”:“xy”,“c”:“xyz”,“d”:“xyzz”}检查“。以assoc和
json_encode
it的形式获取行。如果需要
array\u组合
,添加自定义键。张贴
print\r($vals)的示例
可能需要
htmlentities()
。事实上,我可以用json_编码$vals并省略$obj,这是一种更好的方法。谢谢@James不会将按键从
1
2
3
4
更改为
a
b
c
d
。事实上,那时不需要$obj。再次感谢
echo '<option value={"a":".'$vals['1']'.","b":".'$vals['2']'.","c":".'$vals['3']'.","d":".'$vals['4']'."}>Option Name</option>';
echo '<option value={"a":"'.$vals['1'].'","b":"'.$vals['2'].'","c":"'.$vals['3'].'","d":"'.$vals['4'].'"}>Option Name</option>';