2011-03-05 4 views
-3

J'ai ce code php:Besoin d'aide pour convertir PHP en 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); 

Le format data.csv est (valeur, parent), un exemple serait:

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 

Fondamentalement ce que cela Le code PHP est de créer un tableau multidimensionnel qui contient le nom du parent comme clé et les enfants comme valeurs, et si un enfant contient aussi des sous fils, alors ce serait une clé qui contient des sous-clés, etc ... et il affichera un code html liste formatée pour ce tableau.

Comment pourrais-je utiliser C# pour faire ce que fait ce code php?

+7

Je pense que vous devez d'abord essayer vous-même et découvrez les problèmes que vous avez. Ce site n'écrira pas tout votre code pour vous. Commencez à le faire, faites face au problème. Si le problème est assez précis et bien formulé, vous obtiendrez de l'aide ici – Dyppl

+1

D'accord avec Dyppl - Les deux langues sont différentes et ont des forces différentes. Vous vous rendrez un mauvais service si vous n'avez pas fait l'effort d'essayer vous-même cette tâche. – anon

+0

Pour vous donner un début, je vous suggère de regarder 'Dictionary ' (http://msdn.microsoft.com/fr-fr/library/xfhwa508.aspx). –

Répondre

0

Les tableaux en C# ne ressemblent pas à des tableaux en PHP. Vous devrez probablement implémenter le Composite pattern pour obtenir la structure de données souhaitée. C'est juste un indicateur de la bonne direction (je pense) pour une petite partie de votre tâche. Si vous finissez par utiliser le modèle, considérez Dictionary<string, TComposite> pour le type de collection enfants.

+0

Merci, je finis par utiliser Dictionary , c'était plus facile qu'avec php. – nitrkli

Questions connexes