2011-03-05 7 views
-3

에 PHP를 변환하는 데 도움이 필요 :내가이 PHP 코드를 C#

$lines = file("data.csv"); 
$nested = array(); 
$links = array(); 

// first, create a structure that contains the connections between elements 
foreach ($lines as $line) { 
    list($child, $parent) = explode(",", $line); 
    if (trim($child) == trim($parent)) { 
    $nested[$parent] = null; 
    } else { 
    // add it to the children of parent 
    $links[$parent][] = $child; 
    } 
} 

function process(&$arr) { 
    global $links; 
    foreach ($arr as $key => $value) { 
    // no more children => stop recursion 
    if (!array_key_exists($key, $links)) { 
     $array[$key] = null; 
     continue; 
    } 
    // insert its children 
    $arr[$key] = array_flip($links[$key]); 
    // recurse down 
    process($arr[$key]); 
    } 
} 


function print_html($multi_dimensional_array) 
{ 
    $m = $multi_dimensional_array; 
    $keys = array(); 

    foreach($m as $key=>$value) { 
      $keys[] = $key; 
    } 

    $i = 0; 

    while($i < count($multi_dimensional_array)) { 
     echo '<li><a href="#">'.$keys[$i].'</a>'; 
     if(is_array($multi_dimensional_array[$keys[$i]])) { 
       echo '<ul>'; 
       print_html($multi_dimensional_array[$keys[$i]]); 
       echo '</ul>'; 
     } 
     echo '</li>'; 
     $i++; 
    } 
} 

process($nested); 

print_html($nested); 

data.csv 형식입니다 (값, 부모)의 예는 다음과 같습니다 기본적으로이 무엇을이

one,one 
two,two 
three,three 
sub_one,one 
sub_one2,one 
sub_two,two 
sub_two2,two 
sub_two3,two 
sub_three,three 
sub_sub_one,sub_one 
sub_sub_one2,sub_one 

PHP 코드는 상위 이름을 키로, 하위를 값으로 포함하는 다차원 배열을 만듭니다. 자식이 하위 하위를 포함하면 하위 키 등을 포함하는 키가됩니다. 그러면 html이 인쇄됩니다 해당 배열에 대해 형식화 된 목록.

어떻게이 C#을 사용하여이 PHP 코드를 수행 할 수 있습니까?

+7

나는 당신이 먼저 시도하고 어떤 문제가 있는지 알아야한다고 생각합니다. 이 사이트는 모든 코드를 작성하지 않습니다. 그것을 시작하고 문제를 직시하십시오. 문제가 충분히 구체적이고 잘 표현 된 경우 여기에서 도움을받을 것입니다 – Dyppl

+1

Dyppl 동의 - 두 언어가 다르며 강점이 다릅니다. 너 자신이 일을 시도하는 노력을 기울이지 않았다면 스스로 해를 끼칠 것이다. – anon

+0

어딘가에 시작하려면'Dictionary '(http://msdn.microsoft.com/en-us/library/xfhwa508.aspx)를 살펴 보는 것이 좋습니다. –

답변

0

C#의 배열은 PHP의 배열과 다릅니다. 원하는 데이터 구조를 얻으려면 Composite pattern을 구현해야 할 것입니다. 그것은 당신의 작업의 작은 부분에 대한 올바른 방향 (나는 생각합니다)에 대한 포인터 일뿐입니다. 패턴을 사용하여 끝내려면 자식 컬렉션 유형에 대해 Dictionary<string, TComposite>을 고려하십시오.

+0

감사합니다. 사전 을 사용하여 끝납니다. PHP보다 쉽습니다. – nitrkli

관련 문제