【发布时间】:2013-11-30 04:31:25
【问题描述】:
我正在尝试从发布的值创建一个 php 数组,然后使用 json_encode 来实现:
[{"network_type":"facebook","network_url":"fb.com/name"},{"network_type":"twitter","network_url":"@name"},{"network_type":"instagram","network_url":"#name"}]
json_decode 之后的样子:
array(
[0] => stdClass(
network_type = 'facebook'
network_url = 'fb.com/name'
)
[1] => stdClass(
network_type = 'twitter'
network_url = '@name'
)
[2] => stdClass(
network_type = 'instagram'
network_url = '#name'
)
)
我的 php 看起来像这样:
$social_data = array(
'network_type' => $this->input->post('network_type'),
'network_url' => $this->input->post('network_url')
);
所以数组不是按我想要的方式分组,而是按字段名称:
array(
['network_type'] => array(
[0] => 'facebook'
[1] => 'twitter'
[2] => 'instagram'
)
['network_url'] => array(
[0] => 'fb.com/name'
[1] => '@name'
[2] => '#name'
)
因此 json_encode 的结果没有按我想要的方式分组:
{"network_type":["facebook","twitter","instagram"],"network_url":["fb.com/name","@name","#name"]}
)
所以问题是...如何调整我的 php 以使数组正确?
--- 这是输入字段:
<?php
foreach ($social as $key => $value) {?>
<p>
<label for="network_type"><input type="text" size="20" name="network_type[]" value="<?php echo $value -> network_type; ?>" placeholder="Social Network" /></label>
<label for="network_url"><input type="text" size="20" name="network_url[]" value="<?php echo $value -> network_url; ?>" placeholder="URL or Handle" /></label>
<a class="remNetwork" href="#">Remove</a>
</p>
<?php } ?>
----最新更新:这太接近了!----- 好的,由于某种原因(可能是我以某种方式搞砸了),以下两种建议的方法都没有让我完全到达那里......但是,两种方法的混合让我接近了:
这个 if/loop/array 设置:
$network_type = (array)$this->input->post('network_type', true);
$network_url = (array)$this->input->post('network_url', true);
$social_data = array();
if (($counter = count($network_type)) == count($network_url)){
for($i = 0;$i < $counter; $i++) {
$social_data[$i] = array(
'network_type' => $this->input->post('network_type[$i]'),
'network_url' => $this->input->post('network_url[$i]'),
);
}
}
与此输入循环配对:
<?php
foreach ($social as $key => $value) {
?>
<p>
<label for="network_type"><input type="text" size="20" name="network_type[]" value="<?php echo $value -> network_type; ?>" placeholder="Social Network" /></label>
<label for="network_url"><input type="text" size="20" name="network_url[]" value="<?php echo $value -> network_url; ?>" placeholder="URL or Handle" /></label>
<a class="remNetwork" href="#">Remove</a>
</p>
<?php } ?>
正在产生以下内容:
array(
[0] => array(
['network_type'] => FALSE
['network_url'] => FALSE
)
[1] => array(
['network_type'] => FALSE
['network_url'] => FALSE
)
[2] => array(
['network_type'] => FALSE
['network_url'] => FALSE
)
)
所以,我想如果我能弄清楚为什么这些值是错误的,那么我们就做到了! 感谢并感谢您提前的耐心和帮助...
--再次更新---- 令我沮丧的是,我遗漏了一段可能很关键的内容……当有多个社交时动态创建表单字段的咖啡脚本:
$ ->
socialDiv = $("#social")
i = $("#social p").size() + 1
index = 0
$("#addNetwork").click ->
$("<p><label for=\"network_type[]\"><input type=\"text\" id=\"network_type[]\" size=\"20\" name=\"network_type[]\" value=\"\" placeholder=\"Social Network\" /></label><label for=\"network_url[]\"><input type=\"text\" id=\"network_url[]\" size=\"20\" name=\"network_url[]\" value=\"\" placeholder=\"URL or Handle\" /></label> <a href=\"#\" class=\"remNetwork\">Remove</a></p>").appendTo socialDiv
i++
false
$(document).on "click", ".remNetwork", ->
#$(".remNetwork").bind "click", ->
if i > 1
$(this).parent("p").remove()
i--
false
【问题讨论】:
标签: php arrays json for-loop coffeescript