我有一个键值对字符串,我想将其转换为功能数组。这样我就可以使用他们的密钥来引用这些值。现在我有这个:
$Array = "'Type'=>'Honda', 'Color'=>'Red'";
$MyArray = array($Array);
这不会带回功能键/值数组。我的键值对在变量字符串中,这意味着=>是字符串的一部分,我认为这是我的问题所在。任何帮助,将不胜感激。我想要做的就是将字符串转换为功能键/值对,我可以使用键获取值。我的数据是一个字符串,所以请不要回答“将它们从字符串中删除”。我知道这会奏效:
$MyArray = array('Type'=>'Honda', 'Color'=>'Red');
但我的猜测是数据已经是字符串形式。谢谢你的帮助。
答案 0 :(得分:3)
没有直接的方法可以做到这一点。因此,您需要编写自定义函数来构建每个元素的键和值。
自定义函数的示例规范:
explode()
根据逗号分割每个元素。explode()
=>
注意:如果您的字符串包含分隔符,那么这将更具挑战性。
答案 1 :(得分:1)
正如你所说,你确实需要“将它们从字符串中取出”。但您不必手动完成。另一个答案用爆炸;这是一个很好的方法。我会告诉你另一个 - 我认为最简单的方法是使用preg_match_all()
(documentation),如下所示:
$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);
答案 2 :(得分:0)
您需要解析字符串并提取数据:
$string = "'Type'=>'Honda', 'Color'=>'Red'";
$elements = explode(",",$string);
$keyValuePairs = array();
foreach($elements as $element){
$keyValuePairs[] = explode("=>",$element);
}
var_dump($keyValuePairs);
现在,您可以使用$ keyValuePairs数组创建on数组。
答案 3 :(得分:0)
以下是example的一种方法 -
$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
这可以放入一个可以扩展的功能中,这样每个项目都可以正确清理(而不是这里显示的强力方法),但是演示了基础知识。