Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 字符串中的键值数组_Php_Arrays_Key Value - Fatal编程技术网

Php 字符串中的键值数组

Php 字符串中的键值数组,php,arrays,key-value,Php,Arrays,Key Value,我有一个键值对字符串,我想将其转换为函数数组。这样我就可以使用它们的键引用这些值。现在我有这个: $Array = "'Type'=>'Honda', 'Color'=>'Red'"; $MyArray = array($Array); 这不是带回一个功能键/值数组。我的键值对在一个变量字符串中,这意味着=>是字符串的一部分,我想这就是我的问题所在。任何帮助都将不胜感激。我所要做的就是将字符串转换成函数键/值对,在这里我可以使用键获取值。我的数据是一个字符串,因此请不要回答“从字符

我有一个键值对字符串,我想将其转换为函数数组。这样我就可以使用它们的键引用这些值。现在我有这个:

$Array = "'Type'=>'Honda', 'Color'=>'Red'";
$MyArray = array($Array);
这不是带回一个功能键/值数组。我的键值对在一个变量字符串中,这意味着=>是字符串的一部分,我想这就是我的问题所在。任何帮助都将不胜感激。我所要做的就是将字符串转换成函数键/值对,在这里我可以使用键获取值。我的数据是一个字符串,因此请不要回答“从字符串中删除它们”。我知道这将起作用:

$MyArray = array('Type'=>'Honda', 'Color'=>'Red');

但我的问题是数据已经是字符串的形式了。谢谢您的帮助。

没有直接的方法可以做到这一点。因此,您需要编写一个自定义函数来为每个元素构建键和值

自定义函数的示例规范:

  • 用于根据逗号拆分每个元素
  • 迭代结果并:
    • explode()
      打开
      =>
    • 删除不必要的字符,即单引号
    • 将第一个元素存储为键,将第二个元素存储为值
  • 返回数组

注意:如果字符串包含分隔符,这将更具挑战性。

没有直接的方法可以做到这一点。因此,您需要编写一个自定义函数来为每个元素构建键和值

自定义函数的示例规范:

  • 用于根据逗号拆分每个元素
  • 迭代结果并:
    • explode()
      打开
      =>
    • 删除不必要的字符,即单引号
    • 将第一个元素存储为键,将第二个元素存储为值
  • 返回数组
注意:如果字符串包含分隔符,这将更具挑战性。

如您所说,您确实需要“将它们从字符串中取出”。但你不必手动操作。另一个答案是使用爆炸;这是一个很好的方法。我将向您展示另一个-我认为最简单的方法是使用
preg_match_all()
(),如下所示:

$string = "'Type'=>'Honda', 'Color'=>'Red'";
$array = array();
preg_match_all("/'(.+?)'=>'(.+?)'/", $string, $matches);
foreach ($matches[1] as $i => $key) {
    $array[$key] = $matches[2][$i];
}
var_dump($array);
正如你所说,你确实需要“把它们从绳子上拿出来”。但你不必手动操作。另一个答案是使用爆炸;这是一个很好的方法。我将向您展示另一个-我认为最简单的方法是使用
preg_match_all()
(),如下所示:

$string = "'Type'=>'Honda', 'Color'=>'Red'";
$array = array();
preg_match_all("/'(.+?)'=>'(.+?)'/", $string, $matches);
foreach ($matches[1] as $i => $key) {
    $array[$key] = $matches[2][$i];
}
var_dump($array);

您需要解析字符串并提取数据:

$string = "'Type'=>'Honda', 'Color'=>'Red'";

$elements = explode(",",$string);

$keyValuePairs = array();
foreach($elements as $element){
$keyValuePairs[] = explode("=>",$element);
}

var_dump($keyValuePairs);

现在,您可以使用$keyValuePairs数组创建on数组。

您需要解析字符串并提取数据:

$string = "'Type'=>'Honda', 'Color'=>'Red'";

$elements = explode(",",$string);

$keyValuePairs = array();
foreach($elements as $element){
$keyValuePairs[] = explode("=>",$element);
}

var_dump($keyValuePairs);
现在,您可以使用$keyValuePairs数组创建您的on数组。

这里是一种方法,您可以这样做-

$Array = "'Type'=>'Honda', 'Color'=>'Red'";
$realArray = explode(',',$Array); // get the items that will be in the new array
$newArray = array();
foreach($realArray as $value) {
    $arrayBit = explode('=>', $value); // split each item
    $key = str_replace('\'', '', $arrayBit[0]); // clean up
    $newValue = str_replace('\'', '', $arrayBit[1]); // clean up
    $newArray[$key] = $newValue; // place the new item in the new array
}
print_r($newArray); // just to see the new array
echo $newArray['Type']; // calls out one element
这可以放在一个可以扩展的函数中,以便正确地清理每个项(而不是此处显示的暴力方法),但演示了基本原理。

这里是一种方法,您可以这样做-

$Array = "'Type'=>'Honda', 'Color'=>'Red'";
$realArray = explode(',',$Array); // get the items that will be in the new array
$newArray = array();
foreach($realArray as $value) {
    $arrayBit = explode('=>', $value); // split each item
    $key = str_replace('\'', '', $arrayBit[0]); // clean up
    $newValue = str_replace('\'', '', $arrayBit[1]); // clean up
    $newArray[$key] = $newValue; // place the new item in the new array
}
print_r($newArray); // just to see the new array
echo $newArray['Type']; // calls out one element

这可以放在一个可以扩展的函数中,以便正确地清理每个项(而不是此处显示的暴力方法),但演示了基本原理。

+如果键和值不包含分隔符,这将起作用。是的,这一点很好。我假设答案中的数据格式良好。+如果键和值不包含分隔符,这将起作用。是的,这一点很好。我假设答案中的数据格式正确,要删除单引号,可以使用$cleanString=str_replace(“'”,“,$searchString);要删除单引号,可以使用$cleanString=str_replace(“'”,“,$searchString);