2013-06-02 2 views
-3

내가 PHP 코드 아래를C 번호는

$array[$x] = array(); 
    $array[$x]["no"] = $no; 
    $array[$x]["cid"] = $cid; 
    $array[$x]["wait"] = $wait; 
    $array[$x]["prio"] = $prio; 
    $array[$x]["debug"] = $command[$i]; 

X ++;

질문 : 위와 비슷한 코드를 C#에서 사용하고 싶습니다. 모두 잘 들었지만 지그재그 배열 단계에서 C#에서 이와 같은 작업을 수행하는 방법이 혼란 스럽습니다. 아무에게도 도움이 될 수 있습니까? Thats는 배열의 인덱스이며 문자열 값입니다.

+1

우리는 PHP가 의도하는 바를 모릅니다. 따라서 PHP와 C# 모두를 모르는 사람들이 여러분을 도울 수 있습니다. –

+3

PHP 배열은 해쉬 테이블 일 뿐이므로 C#의 배열 대신 Dictionary >을 사용하는 것처럼 보입니다. – Lee

답변

2

지그재그 배열을 달성하는 한 가지 방법은 사전입니다. 아래 코드를 기반으로 시작하면됩니다.

Dictionary<string, string>[] array; 

void MyMethod(int[] ckeys, int gotovalue, string[] command) 
{ 
    int x = 0; 
    for(int ii = (ckeys[0] + 1); ii < gotovalue; ii++) 
    { 
     string no = preg_replace(" .*", "", command[ii]); 
     string temp = preg_replace("^[0-9]*. ", "", command[ii]); 
     string cid = preg_replace(" (.*", "", temp); 
     temp = preg_replace(".* (wait: ", "", command[ii]); 
     string wait = preg_replace(",.*", "", temp); 
     temp = preg_replace(".*, prio: ", "", command[ii]); 
     string prio = preg_replace(").*", "", temp); 

     array[x] = new Dictionary<string, string>(); 
     array[x]["no"] = no; 
     array[x]["cid"] = cid; 
     array[x]["wait"] = wait; 
     array[x]["prio"] = prio; 
     array[x]["debug"] = command[ii]; 

     x++; 
    } 
} 

string preg_replace(string aa, string bb, string cc) 
{ 
    return aa + bb + cc; 
} 

편집 :

나는 모든 지정되지 않은 유형의 문자열 있다고 가정하고, 질문의 초기 버전의 코드를했다 및 C#으로 변환하기 위해 노력했다. 호출 된 루틴 preg_replace은 지정되지 않았지만 세 개의 문자열을 취하여 하나를 반환하는 것으로 보입니다.

원래 질문은 $x을 정수로 정의하고 초기화하는 것처럼 보이는 라인 $x = 0;이 있습니다. 줄 $array[$x] = array();은 지정된 정수 인덱스에서 $array이 빈 배열을 참조하도록 만들어 진다고합니다. 그런 다음 $array[$x]["no"] 행은 해당 배열의 "no" 요소를 문자열로 설정합니다. C# 내가 제안한 array 사전의 배열로 선언했다. C# 사전은 Perl 언어에서 연관 배열 형태로 '해시'라고합니다. 전체 코드 조각은 구조체에 값을 쓰고 매개 변수에있는 값에서 효과적으로 초기화합니다 (MyMethod).

array을 실제 배열로 나타내려면 array = new Dictionary<string, string>[gotovalue]과 같은 문구가 필요합니다.

+0

이것이 실제로 작동합니까 ?? 그것을 시도했지만 어떻게 C#에서 사전 데이터 형식과 같은 배열을 초기화 할 수 있습니까? 그게 감각을 만들어주지 않니? – Aemz

+0

@Aemz 답변에 대한 설명을 추가했습니다. 대답의 어떤 부분이 의미가 없습니까? – AdrianHHH

+0

그것은 할당되지 않은 지역 변수 'array'의 사용을 말합니다. 정수 x의 선언 이후에 어떻게 초기화 했나요? 사전에 배열 타입의 초기화가 없다고 생각합니다. 그래서 그것이 의미가 없다고 말한 것입니다. – Aemz