Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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对象中以数组的形式发送整个文本输入组?_Php_Arrays_Json - Fatal编程技术网

Php 如何在json对象中以数组的形式发送整个文本输入组?

Php 如何在json对象中以数组的形式发送整个文本输入组?,php,arrays,json,Php,Arrays,Json,我的表单中有一个部分,用户可以“单击以添加更多” 例如,假设您可以将朋友添加到注册中: <a href="#">Click to add friend</a> <label>First Name</label> <input type="text" name="friend[firstName]"> <label>Last Name</label> <input type="text" name="fr

我的表单中有一个部分,用户可以“单击以添加更多”

例如,假设您可以将朋友添加到注册中:

<a href="#">Click to add friend</a>

<label>First Name</label>
<input type="text" name="friend[firstName]">

<label>Last Name</label>
<input type="text" name="friend[lastName]">
...
假设我添加了三个朋友。只有最后一个朋友会被记录下来(这是有道理的)

所以我试着像这样改变我的输入:

...
<input type="text" name="friend[2][firstName]">
<input type="text" name="friend[2][lastName]">
html

<label>First Name</label>
<input type="text" name="friend[][firstName]">

<label>Last Name</label>
<input type="text" name="friend[][lastName]">
...
<ul>
    <li>First Name: Tyler</li>
    <li>Last Name: Durden</li>
</ul>
<ul>
    <li>First Name: Joe</li>
    <li>Last Name: Smith</li>
</ul>
...
<input type="text" name="friend[1][firstName]">
<input type="text" name="friend[1][lastName]">
<p><a href="#" id="add">Add Friend</a>
<form>
<div class="clone">
<label>First Name</label>
<input type="text" name="friends[1][firstName]">

<label>Last Name</label>
<input type="text" name="friends[1][lastName]">
</div>

<button type="submit">Submit</submit>
</form>
我(认为)正在努力实现的是:

[friend_data] => {"friend":[{"firstName":"Tyler"},{"lastName":"Durden"}],[{"firstName:"Joe"},{"lastName":"Smith"}]}
我正在使用它来创建上述内容:

php

 json_encode(array('friend' => $input['friend']))
$friends = array();
foreach ($input['friend'] as $friend) {
    array_push($friends, $friend);
}
...
$person->friend_data = json_encode($friends);
这样,我可以循环遍历json对象,并按如下方式呈现每个数组:

...
<input type="text" name="friend[2][firstName]">
<input type="text" name="friend[2][lastName]">
html

<label>First Name</label>
<input type="text" name="friend[][firstName]">

<label>Last Name</label>
<input type="text" name="friend[][lastName]">
...
<ul>
    <li>First Name: Tyler</li>
    <li>Last Name: Durden</li>
</ul>
<ul>
    <li>First Name: Joe</li>
    <li>Last Name: Smith</li>
</ul>
...
<input type="text" name="friend[1][firstName]">
<input type="text" name="friend[1][lastName]">
<p><a href="#" id="add">Add Friend</a>
<form>
<div class="clone">
<label>First Name</label>
<input type="text" name="friends[1][firstName]">

<label>Last Name</label>
<input type="text" name="friends[1][lastName]">
</div>

<button type="submit">Submit</submit>
</form>
我仍然不认为这是完全正确的。 这与我如何编码数据有关吗

$person->friend_data = json_encode(array('friend' => $input['friend']));
解决方案

感谢马可·阿尔卡的帮助!下面是我在其他人遇到这个问题时所做的

如前所述,我的表单中有一个部分,可以将朋友添加到我的注册中。默认情况下,加载页面时,只有一个朋友可见。我使用javascript(jQuery)允许用户添加任意数量的朋友

这是初始加载时页面上的标记(为简单起见缩短)

html

<label>First Name</label>
<input type="text" name="friend[][firstName]">

<label>Last Name</label>
<input type="text" name="friend[][lastName]">
...
<ul>
    <li>First Name: Tyler</li>
    <li>Last Name: Durden</li>
</ul>
<ul>
    <li>First Name: Joe</li>
    <li>Last Name: Smith</li>
</ul>
...
<input type="text" name="friend[1][firstName]">
<input type="text" name="friend[1][lastName]">
<p><a href="#" id="add">Add Friend</a>
<form>
<div class="clone">
<label>First Name</label>
<input type="text" name="friends[1][firstName]">

<label>Last Name</label>
<input type="text" name="friends[1][lastName]">
</div>

<button type="submit">Submit</submit>
</form>
然后在php端,我获取了所有值:

php

 json_encode(array('friend' => $input['friend']))
$friends = array();
foreach ($input['friend'] as $friend) {
    array_push($friends, $friend);
}
...
$person->friend_data = json_encode($friends);
将生成以下json:

json

[friend_data] => [{"firstName":"Tyler","lastName":"Durden"},{"firstName":"Master","lastName":"Shake"}]

您可以在填写ID时创建有用的数组:

Friend 1:
<label>First Name</label>
<input type="text" name="friend[0][firstName]">
<label>Last Name</label>
<input type="text" name="friend[0][lastName]">

Friend 2:
<label>First Name</label>
<input type="text" name="friend[1][firstName]">
<label>Last Name</label>
<input type="text" name="friend[1][lastName]">
Friend 1:
名字
姓
朋友2:
名字
姓

Hi@Marco Alka-我已经用你的建议更新了我的问题。我认为这很接近,但我不太确定我是否正确。两个问题:(1)你可以使用javascript吗?(2) 使用GET方法传递表单数据可以吗?结果是我对数组进行了“双重”编码。我用了你建议的方法,效果很好。非常感谢您抽出时间!我将为其他人更新我的问题。