2013-05-24 6 views
2

첫 번째 매개 변수로 double 배열을 사용하고 첫 번째 매개 변수를 기반으로 다른 배정 밀도 배열을 다시 전달하는 .net C# 함수가 있습니다.PHP에서 double 배열을 C#으로 전달하는 방법

C# 코드

public int testMath(double[] InputSet, double[] OutputSet) 
{ 
    // more complicated than what I am showing but 
    for (int i = 0; i < 3; i++) 
    { 
     OutputSet[i] = InputSet[i] * 2.0; 
    } 
    return 1; // Really something else 
} 

PHP

$mathTest = new DOTNET("MathTest," 
     ."Version=1.0.0.0," 
     ."Culture=neutral," 
     ."PublicKeyToken=213536b1e6bb8ea5" 
     , "MathTest.MathTest"); 

$inputValue = Array(); 
$outputValue = Array(); 

for ($i = 0; $i < 3; $i++){ 
    $inputValue[$i] = $i * 3.0; 
    $outputValue[$i] = 0.0; 
} 

$status = $mathTest->testMath($inputValue, $outputValue); 

내가 매개 변수 1은 유형 불일치라고 오류가이를 실행 해보십시오.
필자는 예상대로 작동하는 ref 출력과 입력으로 double을 사용하는 다른 루틴을 가지고 있습니다. 다른 프로그래밍 언어에서이 루틴을 호출 할 수 있지만 PHP에서 작동하도록하는 방법에 관해서는 난처한 입장입니다. com_print_typeinfo를 사용하여 매개 변수를 보았는데 두 인수가 모두 VT_SAFEARRAY로 표시된다는 것을 알았습니다. 저는 1 인자를 OUT으로 바꾸기위한 몇 가지 테스트를 했었습니다. 그리고 그것은 더 나쁘게 만들었습니다 (전혀 실행되지 않을 것입니다). 어떤 제안이라도 대단히 감사하겠습니다.

+0

진지하게, 왜 C#에서 일어날 필요가 있습니까? 또는 다른 방법 라운드? 이것은 끔찍한 일처럼 보입니다. –

답변

1

가장 간단한 approch는 double 배열을 json으로 인코딩하는 것입니다. PHP에서

json_encode ($myarr); 

또는 다음

json_decode ($myarr); // if u want the other direction 

그냥 C#을 (또는 그 반대)에 그것을 잡을 그것을 디코딩. u는 json.net이나 jsonFx 등을 사용할 수 있습니다.

+0

고마워요. 이전에 json을 사용하지 않았으므로 Visual Studio 구성에 설치해야했습니다. 약간의 실수를 한 후에 나는 그것을 작동 시켰습니다. –

관련 문제