2016-06-22 9 views
2

のうち、多次元配列を作成します。私は悲惨に失敗しています。私の頭が多次元配列の周りを包み込むのは難しいです。が、私はこのような文字列があると、長い文字列のPHP

$trigger_data = "all:ticket_location:is:5|||all:ticket_sub_location:is:1|||any:ticket_is:created:NULL|||any:ticket_is:updated:NULL|||action:assigned_agent_uid:admin"; 

    $parts = explode("|||",$trigger_data); 
    $rules = array(); 
    $actions = array(); 
    foreach($parts as $value) { 
     $pieces = explode(":",$value); 
     if ($pieces[0] == "all" || $pieces[0] == "any") { 
      $rules[$pieces[0]][$pieces[1]][$pieces[2]] = $pieces[3]; 
     } 
     if ($pieces[0] == "action") { 
      $actions[$pieces[0]][$pieces[1]] = $pieces[2]; 
     } 

    } 

    print_r($pieces); 
    print_r($actions); 
    exit; 

答えて

3

何かする前に、あなたはanyの内側に同じ次元の両方ticket_isのキーを持つことはできません。あなたが必要なときexplodeを使用し、その後、必要な深さに継続的にあなたの鍵を作成できるようにとにかく、ちょうど、参照を使用します。

$trigger_data = "all:ticket_location:is:5|||all:ticket_sub_location:is:1|||any:ticket_is:created:NULL|||any:ticket_is:updated:NULL|||action:assigned_agent_uid:admin"; 
$final = array(); 
foreach(explode('|||', $trigger_data) as $e) { 
    $e = explode(':', $e); 
    $result = &$final; 
    $value = end($e); 
    foreach($e as $parts) { 
     if($value === $parts) { 
      $result = $value; 
     } else { 
      $result = &$result[$parts]; 
     } 

    } 
} 

print_r($final); 

Out

+0

をヘクタールああ!本当にありがとう! – DanielOlivasJr

+0

@DobotJr確かにprob – Ghost

関連する問題