我有一个这样的字符串: -
$a = " [abc,hjhd],[ccdc,cdc],[csc,vdfv]";
我想将此字符串插入数组中。
$marker_tower_line = array(
'type' => 'Feature',
'properties' => array(
'marker-color' => '#f00',
'marker-size' => 'small'
),
'geometry' => array(
'type' => 'LineString',
'coordinates' => array (
$a
)
)
);
输出结果是 -
["[abc,hjhd],[ccdc,cdc],[csc,vdfv]"];
但我需要 -
[[abc,hjhd],[ccdc,cdc],[csc,vdfv]];
答案 0 :(得分:1)
我认为你正在寻找这个,
$somearray=explode(",",$a);
然后使用$ somearray作为坐标。唯一的问题是你必须使用这个想法在你的逻辑中实现。例如,如果$ a是你正在制作的字符串,那么就像这样,
$a = "[abc,hjhd].,[ccdc,cdc].,[csc,vdfv]";
然后使用explode作为
$somearray=explode(".,",$a);
希望这会有所帮助。
答案 1 :(得分:1)
最简单的答案(带有简单php功能的单行代码): -
<?php
$a = " [abc,hjhd],[ccdc,cdc],[csc,vdfv]";
$b = array_chunk(explode(",",str_replace(array("[","]"),array("",""),trim($a))),2);
print_r($b);
输出: - https://eval.in/833862
或者更短一点(没有trim()
): -
<?php
$a = " [abc,hjhd],[ccdc,cdc],[csc,vdfv]";
$b = array_chunk(explode(",",str_replace(array("[","]"," "),array("","",""),$a)),2);
print_r($b);
输出: - https://eval.in/833882
答案 2 :(得分:1)
您可以使用此代码。函数make_my_array()
适用于以给定格式编码的任何字符串。
make_my_array()函数将您的字符串作为参数,并遍历每个字符以生成输出数组。它通过'['字符确定集合的凝视,并通过','字符确定单独的集合元素,']'字符确定集合的结束。
function make_my_array($sa) {
$s = "";
$ans = array();
for($i=0; $i<strlen($sa); $i++) {
$t = array();
if($sa[$i] == '[') {
for($j=$i+1; $j<strlen($sa); $j++) {
if($sa[$j] == ',') {
$t[] = $s;
$s = "";
}
else if($sa[$j] == ']') {
$t[] = $s;
$s = "";
$i = $j + 1;
$ans[] = $t;
break;
}
else {
$s .= $sa[$j];
}
}
}
}
return $ans;
}
$a = " [abc,hjhd],[ccdc,cdc],[csc,vdfv]";
$marker_tower_line = array(
'type' => 'Feature',
'properties' => array(
'marker-color' => '#f00',
'marker-size' => 'small'
),
'geometry' => array(
'type' => 'LineString',
'coordinates' => make_my_array($a)
)
);