如何使用PHP正确地反序列化来自JQuery的字符串


How to properly deserialize a string from JQuery using PHP?

我想知道,有没有人知道我如何正确地反序列化字符串从JQuery使用PHP?JQuery传递到PHP文件中的字符串是这样的:

age_gender = 1, age_gender = 2, age_gender = 3, age_gender = 4, age_gender = 5, age_gender = 6

我需要的值是等号后面的数字(它们只是我用于测试的虚拟值)。

编辑:实际上,我已经在使用parse_str()。下面是我的PHP代码:
if(isset($_POST['age_gender'])) { 
    $formSerialized = $_POST['age_gender'];
    $formData = array();
    parse_str($formSerialized, $formData);
    addRow($formData, $link); 
}
function addRow($dataArray, $link) {
    $age_group = $dataArray[0];
    $populations = array(intval($dataArray[1]) + intval($dataArray[2]), intval($dataArray[1]), intval($dataArray[2]));
    $percents = array(doubleval($dataArray[3]) + doubleval($dataArray[4]), doubleval($dataArray[3]), doubleval($dataArray[4]));
    $m_per_100_f = doubleval($dataArray[6]);
    $query = "INSERT INTO national_age_gender_demographics (age_group, both_pop, male_pop, female_pop, both_percent, male_percent, female_percent, males_per_100_females)
    VALUES ('$age_group','$populations[0]','$populations[1]','$populations[2]','$percents[0]','$percents[1]','$percents[2]','$m_per_100_f')";
    $result = mysqli_query($link,$query);
    if(!$result)  die( "Query: " . $query . "'nError:" . mysql_error() );
}

由于某种原因,我得到一个空白字符串为$age_group,和0的所有其他值。有人能帮我一下吗?

参见parse_str()

的例子:

parse_str('age_gender=1&age_gender=2&age_gender=3&age_gender=4&age_gender=5&age_gender=6', $output); 
print_r($output);

如果你想获得请求的查询字符串你可以使用php使用$_SERVER['QUERY_STRING']

parse_str()是您正在寻找的功能。
您可以使用两个选项:

  1. parse_str($string) -这实际上会为字符串中的每个键创建一个变量。
  2. parse_str($string,$arr) -这将用包含字符串中所有键=>值对的关联数组填充$arr

文档给出了一些很好的代码来演示这种行为:

$str = "first=value&arr[]=foo+bar&arr[]=baz";
parse_str($str);
echo $first;  // value
echo $arr[0]; // foo bar
echo $arr[1]; // baz
parse_str($str, $output);
echo $output['first'];  // value
echo $output['arr'][0]; // foo bar
echo $output['arr'][1]; // baz