我需要帮助: 我有一个数组,我需要从中获取值...但是如何获取大括号内的数据......
它应该是简单的东西,我想...我试过爆炸,这显然无法工作,例如在最后一个大括号中有两种数据,应该区分为......每个花括号(数据适用于某些事情。)
$array = array(
"other" => "{name:2},{value:2},{align:4},{height:4, color:red}",
"another" => "{name:2},{value:2},{align:4},{height:4, color:red}"
);
我真的很挣扎......并感谢你的帮助。 感谢
答案 0 :(得分:4)
preg_match_all('/\{([^}]*)\}/', $str, $matches);
foreach($matches[1] as $match)
{
$pieces = explode(',', $match);
foreach($pieces as $pair)
{
list($key, $value) = explode(':', trim($pair));
// do something with $key and $value
}
}
答案 1 :(得分:2)
试试这个,然后阅读json_decode
和json_encode
个功能
$result = json_decode('['.$array['other'].']', true);
<强>更新强>
尝试此操作后,我注意到你的字符串不是一个有效的JSON,所以我的答案不是一个好的解决方案,除非你能得到{“key”:“value”}格式答案 2 :(得分:2)
相反,我认为爆炸将完美地发挥作用。分解为单独的字符串,然后每个字符串从索引1检索到索引[arraylength-1],因为索引0包含{和最后一个索引包含}。
$str = substr($str, 1, strlen($str)-1);
因此,对于从索引1切换到last_index-1的每个字符串。
编辑:
你做第一次爆炸(将它切成2个大块):chunk1和chunk2
foreach chunk array
$pieces=explode(",",$chunk1);
//或块2(这将进一步将碎片切割成由其分隔的字符串,)
$str = substr($pieces, 1, strlen($pieces)-1);
然后,对于每个$ piece,检索其间的内容。 (伪代码)