我的上一个问题帮助我将表单中的数据转换为数组。该阵列的结构与我之前使用的任何东西都有很大的不同。我有多个记录,每个记录都有一个文本框和复选框。这是表单数据:
array(4) {
["product"]=> array(4) {
[0]=> string(5) "Dummy"
[1]=> string(7) "Dummy 2"
[2]=> string(7) "Dummy 3"
[3]=> string(7) "Dummy 4"
}
["tags"]=> array(4) {
[0]=> string(25) "#enter, #product, #hastag"
[1]=> string(0) ""
[2]=> string(25) "#enter, #product, #hastag"
[3]=> string(25) "#enter, #product, #hastag"
}
["chk"]=> array(2) {
[0]=> string(2) "on"
[2]=> string(2) "on"
}
["submit"]=> string(5) "tweet"
}
我希望将此数组中的数据转换为一种形式,例如(仅当chk =“on”)时:
tweet[0]["product"] = "dummy"
tweet[0]["tag"] = "hash tag list here"
tweet[1]["product"] = "dummy3"
tweet[1]["tag"] = "hash tag list here"
最值得赞赏的任何帮助! :)
答案 0 :(得分:4)
首先,我建议使用1
代替on
。您应该尽可能使用数值,因为它们需要较少的处理。我认为你需要重新调整你的HTML,所以你根本不在PHP方面进行任何处理......
<input type="checkbox" name="tweet[(YOUR_TWEET_ID)][product]" value="PRODUCT_NAME"/>
<input type="text" name="tweet[(YOUR_TWEET_ID)][tags]" value=""/>
如果没有任何其他代码,这将使表单以$ _POST完全符合您的要求。
<强>更新强>
foreach ($_POST['tweet'] as $tweetId => $value) {
//again, it'd be a good idea to use a numerical value here
if (strlen($value['product']) > 0) {
//this tweet was checked, lets do with it what we need
//here's how you'd get the tags
echo $_POST['tweet'][$tweetId]['tags'];
}
}
答案 1 :(得分:2)
$finalArray = array();
foreach($array['product'] as $key => $name){
if(!empty($array['chk'][$key])){
$finalArray[] = array(
"product" => $name,
"tag" => $array['tags'][$key]);
};
}
答案 2 :(得分:1)
非常简单:
$i=0;
foreach ($array['chk'] as $key => $val) {
if ($val == "on") {
$new_array[$i]['product'] = $array['product'][$key];
$new_array[$i++]['tags'] = $array['tags'][$key];
}
}
print_r($new_array);
应该这样做,还有其他方法,这只是其中之一。
答案 3 :(得分:1)
foreach ($records['chk'] as $id => $temp) {
$tweet[$id]['product'] = $records['product'][$id];
$tweet[$id]['tag'] = $records['tags'][$id];
}