2013-10-02 33 views
2

我有这样的阵列(的var_dump()输出):改变引用数组规则排列

array (size=32) 
    2 => & 
    array (size=3) 
     'data' => 
     array (size=3) 
      'parent_id' => string '1' (length=1) 
      'id' => string '2' (length=1) 
      'options' => string '2' (length=1) 
     'attr' => 
     array (size=2) 
      'rel' => string 'container' (length=9) 
      'id' => string '2' (length=1) 
     'children' => 
     array (size=3) 
      3 => & 
      array (size=3) 
       'data' => 
       array (size=3) 
        'parent_id' => string '2' (length=1) 
        'id' => string '3' (length=1) 
        'options' => string '3' (length=1) 
       'attr' => 
       array (size=2) 
        'rel' => string 'container' (length=9) 
        'id' => string '3' (length=1) 
       'children' => 
       array (size=2) 
        8 => & 
        array (size=3) 
         'data' => 
         array (size=3) 
          'parent_id' => string '3' (length=1) 
          'id' => string '8' (length=1) 
          'options' => string '1' (length=1) 
         'attr' => 
         array (size=2) 
          'rel' => string 'container' (length=9) 
          'id' => string '8' (length=1) 
         'children' => 
         array (size=2) 
          11 => & 
          array (size=3) 
           'data' => 
           array (size=3) 
            'parent_id' => string '8' (length=1) 
            'id' => string '11' (length=2) 
            'options' => string '3' (length=1) 
           'attr' => 
           array (size=2) 
            'rel' => string 'container' (length=9) 
            'id' => string '11' (length=2) 

正如你可以看到一些关键的是通过引用传递,我想这个阵列更改规则排列,就像这样:

array (size=32) 
    0 => 
    array (size=3) 
     'data' => 
     array (size=3) 
      'parent_id' => string '1' (length=1) 
      'id' => string '2' (length=1) 
      'options' => string '2' (length=1) 
     'attr' => 
     array (size=2) 
      'rel' => string 'container' (length=9) 
      'id' => string '2' (length=1) 
     'children' => 
     array (size=3) 
      0 => 
      array (size=3) 
       'data' => 
       array (size=3) 
        'parent_id' => string '2' (length=1) 
        'id' => string '3' (length=1) 
        'options' => string '3' (length=1) 
       'attr' => 
       array (size=2) 
        'rel' => string 'container' (length=9) 
        'id' => string '3' (length=1) 
       'children' => 
       array (size=2) 
        0 => 
        array (size=3) 
         'data' => 
         array (size=3) 
          'parent_id' => string '3' (length=1) 
          'id' => string '8' (length=1) 
          'options' => string '1' (length=1) 
         'attr' => 
         array (size=2) 
          'rel' => string 'container' (length=9) 
          'id' => string '8' (length=1) 
         'children' => 
         array (size=2) 
          0 => 
          array (size=3) 
           'data' => 
           array (size=3) 
            'parent_id' => string '8' (length=1) 
            'id' => string '11' (length=2) 
            'options' => string '3' (length=1) 
           'attr' => 
           array (size=2) 
            'rel' => string 'container' (length=9) 
            'id' => string '11' (length=2) 

回答

1

只是json_encodejson_decode

$array = json_decode(json_encode($array), true); 

你也可以使用这个功能。

function deReferencing($value) 
    { 
    if (is_array($value)) 
     { 
     $return = array(); 
     foreach ($value as $key => $item) 
      { 
      unset($value[$key]); 
      if (is_numeric($key)) { 
       $return[] = deReferencing($item); 
       } else { 
       $return[$key] = deReferencing($item); 
       } 
      } 
     } 
    else 
     $return = $value; 

    return $return; 
    } 

$array = deReferencing($array); 
+0

不幸的是,它不工作! –

+0

@ArashMousavi,你是什么意思? – sectus

+0

我试过你的方法,但它没有奏效,输出数组和第一个数组一样,并没有改变... –