PHP如何将分隔的字符串拆分为键值对

时间:2018-06-22 09:03:33

标签: php arrays key-value

我已经看了看,似乎无法解决这个问题。请帮忙。

我有这个字符串:

firstname=Fred&lastname=Flintstone&city=Dallas&state=Texas

我需要这个数组:

(
    [firstname] => Fred
    [lastname] => Flintstone
    [city] => Dallas
    [state] => Texas
)

但是我得到了:

(
    [0] => firstname=Fred
    [1] => lastname=Flintstone
    [2] => city=Dallas
    [3] => state=Texas
)

我最近的尝试:

$rawData = "firstname=Fred&lastname=Flintstone&city=Dallas&state=Texas";
$array = explode('&', $rawData);
$newArray = explode('=', $array);
$good = print_r($newArray, true);

哪些错误。

我想念什么?

4 个答案:

答案 0 :(得分:2)

使用parse_str函数:

  

无效的parse_str(字符串$ encoded_string [,数组&$ result])

     
    

像对待通过URL传递的查询字符串一样解析encoded_string,并在当前作用域(或提供结果的数组中)中设置变量。

  
$str = 'firstname=Fred&lastname=Flintstone&city=Dallas&state=Texas';

parse_str($str, $output);
echo $output['firstname'];  // Fred
echo $output['lastname']; // Flintstone
echo $output['city']; // Dallas
echo $output['state']; // Texas

答案 1 :(得分:1)

您可以使用parse_str()来实现:

$rawData = "firstname=Fred&lastname=Flintstone&city=Dallas&state=Texas";
parse_str($rawData, $good);

要查看输出:

echo '<pre>' . print_r($good, true) . '</pre>';

/*
Array
(
    [firstname] => Fred
    [lastname] => Flintstone
    [city] => Dallas
    [state] => Texas
)
*/

答案 2 :(得分:0)

使用parse_str

$str = 'firstname=Fred&lastname=Flintstone&city=Dallas&state=Texas';
parse_str($str, $output);

var_dump($output);

输出

array(4) {
  ["firstname"]=>
  string(4) "Fred"
  ["lastname"]=>
  string(10) "Flintstone"
  ["city"]=>
  string(6) "Dallas"
  ["state"]=>
  string(5) "Texas"
}

实时示例

Repl

阅读材料

parse_str

答案 3 :(得分:0)

使用PHP的parse_str()函数。

代码:

<?php
$str = 'firstname=Fred&lastname=Flintstone&city=Dallas&state=Texas';
parse_str($str, $get_array);
echo '<pre>';print_r($get_array);echo '</pre>';die;
?>

输出:

Array
(
    [firstname] => Fred
    [lastname] => Flintstone
    [city] => Dallas
    [state] => Texas
)