帮助优化php中的函数

帮助优化php中的函数,php,multidimensional-array,Php,Multidimensional Array,我在php中创建了一个函数来转换字符串,如下所示: [20110911, 20110913, [20110915, 20110918], 20110920, 20110922, 20110924, [20110926, 20110927], 20110929] 要创建php数组,请执行以下操作: Array ( [0] => 20110911 [1] => 20110913 [2] => Array ( [0]

我在php中创建了一个函数来转换字符串,如下所示:

[20110911, 20110913, [20110915, 20110918], 20110920, 20110922, 20110924, [20110926, 20110927], 20110929]
要创建php数组,请执行以下操作:

Array
(
    [0] => 20110911
    [1] => 20110913
    [2] => Array
        (
            [0] => 20110915
            [1] => 20110918
        )

    [3] => 20110920
    [4] => 20110922
    [5] => 20110924
    [6] => Array
        (
            [0] => 20110926
            [1] => 20110927
        )

    [7] => 20110929
    [8] => Array
        (
            [0] => 20111001
            [1] => 20111002
        )

    [9] => 20111004
    [10] => Array
        (
            [0] => 20111006
            [1] => 20111007
        )

)
功能是:

function dates2Array($d){
    if($d!==''){
        $d=substr($d, 1, strlen($d)-2);
        $d=explode(', ', $d);
        $dates=array();
        if(!empty($d)){
            $j=1;
            foreach($d as $k=>$v){
                if(substr($v, 0, 1)==='[') $dates[]=array(substr($v, 1, strlen($v)));
                elseif(substr($v, strlen($v)-1, strlen($v))===']'){
                    $dates[$k-$j][1]=substr($v, 0, strlen($v)-1);
                    $j++;
                }
                else $dates[]=$v;
            }
        }
    }

    return $d!==''?$dates:'';
}
我对自己的功能不太满意。 我认为它可以更优化和压缩速度。。 可以吗?

使用JSON(and)代替

结果:

Array
(
    [0] => 20110911
    [1] => 20110913
    [2] => Array
        (
            [0] => 20110915
            [1] => 20110918
        )

    [3] => 20110920
    [4] => 20110922
    [5] => 20110924
    [6] => Array
        (
            [0] => 20110926
            [1] => 20110927
        )

    [7] => 20110929
)

您可以在{…}中传递字符串,并将其传递给
json\u decode(str,true)
以获取数组

>> json_decode("[20110911, 20110913, [20110915, 20110918], 20110920, 20110922, 2
0110924, [20110926, 20110927], 20110929]")
array (
  0 => 20110911,
  1 => 20110913,
  2 =>
  array (
    0 => 20110915,
    1 => 20110918,
  ),
  3 => 20110920,
  4 => 20110922,
  5 => 20110924,
  6 =>
  array (
    0 => 20110926,
    1 => 20110927,
  ),
  7 => 20110929,
)

它会像上面提到的一样转换成相同的数组吗?我知道,但它什么也没做…:(@Vaib看一看我的演示。确保你有PECL json>=1.2的PHP。0@VaibhavGupta字体是的,试试看again@Vaibhav古普塔:这个链接起作用了,但你的系统中有些东西不起作用!@VaibhavGupta:你认为你可以在这里共享你的IP吗?这正是我13分钟前发布的答案