2017-01-17 31 views
0

我有一個多維數組,我想內爆(然後能夠爆炸回原始的多維數組)。有沒有辦法解決問題,保持關鍵?在php中有不同分隔符的內部多維數組

這裏是什麼我的陣列看起來像一個例子:

Array ( 
    [draw] => 1 
    [columns] => Array ( 
     [0] => Array ( 
      [data] => 0 
      [name] => Edit 
      [searchable] => true 
      [orderable] => true 
      [search] => Array ( 
       [value] => 
       [regex] => false)) 
     [1] => Array ( 
      [data] => 1 
      [name] => 
      [searchable] => true 
      [orderable] => true 
      [search] => Array ( 
       [value] => 
       [regex] => false)) 
     [2] => Array ( 
      [data] => 2 
      [name] => 
      [searchable] => true 
      [orderable] => true 
      [search] => Array ( 
       [value] => 
       [regex] => false)) 

這裏就是我沒有成功嘗試:

$out = implode('::',array_map(function($a) 
           { 
            return implode('&&',array_map(function($b) 
                    { 
                     return implode('~~',$b); 
                    },$array)); 
           })); 

我也試過這樣:

foreach($array as $Value) 
{ 
    if(is_array($Value)) 
    { 
     foreach($Value as $Columns) 
     { 
      if(is_array($Columns)) 
      { 
       foreach($Columns as $Search) 
       { 
        if(is_array($Search)) 
        { 
         $Search = implode("::",$Search); 
        } 
        //echo "<br>Search: "; print_r($Search); 
       } 
      } 
      else 
      { 
       echo "<br>Columns: "; print_r($Columns); 
       //$Columns = implode("&&",$Columns); 
      } 
     } 
    } 
    else 
    { 
     //$Value = implode("~~",$Value); 
    } 
} 
//print_r($array); 

我想讓它看起來像在爆炸的結尾是:

[draw] => 1 :: [columns] => && [0] => ~~ [data] => 0 ~~ [name] => Edit ~~ [searchable] => true ~~ [orderable] => true ~~ [search] => %% [value] => %% [regex] => false && [1] => ~~ [data] => 1 ~~ [name] => ~~ [searchable] => true ~~ [orderable] => true ~~ [search] => %% [value] => %% [regex] => false 

至少我很確定我把所有的分隔符都放在正確的位置。如果我無法保持鍵沒問題,只要分隔符位於正確的位置,我可以稍後重新創建多維數組。

回答

1

爲什麼不在結構上只使用serialize(),然後使用unserialize()來恢復它?

這個PHP內建將比你自己編寫的任何自定義代碼更好/更快/更安全地工作。

+0

太棒了,希望我早點發現! – Mike

0

我得到了這個工作,並認爲我會在未來發布所有可能需要它們的結果。

我意識到我知道鑰匙是什麼,我可以在內爆過程中使用它們。所以我這樣做:

function Convert_From_Array($array) 
{ 
    $Number = count($array['columns']); 

    for ($i = 0 ; $i < $Number ; $i++) 
    {    
     $array['columns'][$i]['search'] = implode('::',$array['columns'][$i]['search']); 

     $array['columns'][$i] = implode('&&', $array['columns'][$i]); 
    } 
    $array['columns'] = implode('~~', $array['columns']); 
    $array['order'][0] = implode('&&',$array['order'][0]); 
    $array['order'] = implode('&&',$array['order']); 
    $array['search'] = implode('&&',$array['search']); 
    $array = implode('%%', $array); 
} 

然後使用這個功能我這樣稱呼它:

$PostKept = Convert_From_Array($KeepPost); 

隨着$KeepPost是多維數組我試圖破滅。最終結果如下所示:

1%%0&&Edit&&true&&true&&::false~~1&&&&true&&true&&::false~~2&&&&true&&true&&::false~~3&&&&true&&true&&::false~~4&&&&true&&true&&::false~~5&&&&true&&true&&::false~~6&&&&true&&true&&::false~~7&&&&true&&true&&::false~~8&&&&true&&true&&::false%%0&&asc%%0%%25%%&&false%%QDefs 

現在我必須將它們全部放在一起。