我正在将一个序列化的字符串接收到一个 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/