javascript - 在 PHP 中循环序列化表单字段

标签 javascript php jquery forms

我正在将一个序列化的字符串接收到一个 PHP 函数中(通过 Ajax 发送到 PHP)。假设它看起来像这样:

year=1923&season=Winter&person_1_name=barry&person_1_age=20&person_2_name=Tom&person_3_name=Jane&person_3_age=30

我需要知道如何在 PHP 中拆分这些编号的字段,以便我可以对它们做一些事情,例如:

foreach ( person_x as person ) {
    // do something here with person_x's details
}

此外,我无法概括我将收到的信息,因为有些人可能没有所有信息(请注意 person_2 在上面的示例中没有年龄)并且这些字段的数量未知(它们在表格)

最佳答案

使用parse_str() 推荐方法

$string = 'year=1923&season=Winter&person_1_name=barry&person_1_age=20&person_2_name=Tom&person_3_name=Jane&person_3_age=30';

parse_str($string, $output);
foreach ($output as $key => $person){
 echo $key  . " = " . $person . "<br />";
}

使用 explode()

$string = 'year=1923&season=Winter&person_1_name=barry&person_1_age=20&person_2_name=Tom&person_3_name=Jane&person_3_age=30';

$persons = explode("&", $string);    
foreach ($persons as $person){
  $details = explode("=", $person); 
  echo $details[0] . " = " . $details[1] . "<br />";
}

输出:

year = 1923
season = Winter
person_1_name = barry
person_1_age = 20
person_2_name = Tom
person_3_name = Jane
person_3_age = 30
----------
year = 1923
season = Winter
person_1_name = barry
person_1_age = 20
person_2_name = Tom
person_3_name = Jane
person_3_age = 30

排除不以person_开头的所有其他字段

parse_str($string, $output);
foreach ($output as $key => $person){
 if(preg_match('/person_/', $key)){
   echo $key  . " = " . $person . "<br />";
 }
}

输出:

person_1_name = barry
person_1_age = 20
person_2_name = Tom
person_3_name = Jane
person_3_age = 30

关于javascript - 在 PHP 中循环序列化表单字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25228386/

相关文章:

javascript - 防止在表单完成之前出现加载图像

javascript - 如何在js中转换为数组?

javascript - 如果有人已经在里面,ReactJs 会阻止某人加载页面

php - 如何显示所有id_following

php - 在 Zend 中为每个模块自动加载表单和模型?

jquery - jQuery 工具提示的建议

javascript - 我的 javascript 平滑滚动无法滚动到 Firefox 中的正确位置,有人知道我做错了什么吗?

c# - 从 C# 调用 onclick 方法

javascript - knockout : how to filter by genre AND by mediatype

jquery - 不确定 JQuery 如何解释 .each() 和 (this)