删除数组中的引号

时间:2017-07-18 09:44:47

标签: php arrays yii

我有一个这样的字符串: -

$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]];

3 个答案:

答案 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)
    )
);