2014-01-27 57 views
1

我想通過JSON-RPC將數組從Perl傳遞到PHP。因此,這裏的構成陣列,並返回它的Perl程序:使用JSON-RPC將數組從Perl傳遞到PHP

sub queueMemberList() : Public() 
{  
     my @qNames; 
     $connection = ConnectToMySql($dbName); 
     $query = "select membername from queue_members"; 
     $statement = $connection->prepare($query); 
     print $statement->execute(); 
       while(@data = $statement->fetchrow()) 
       {  #$sendStr = $sendStr."+".$data[0]; 
         push(@qNames, $data[0]); 
       } 
     return \@qNames; 
} 

sub ConnectToMySql 
{  my ($db) = @_; 
     open(ACCESS_INFO, "<accessAdd") || die "Can't access login credentials"; 
       my $dbName = <ACCESS_INFO>; 
       my $host = <ACCESS_INFO>; 
       my $userid = <ACCESS_INFO>; 
       my $passwd = <ACCESS_INFO>; 
       my $connectionInfo="dbi:mysql:$db;$host"; 
     close(ACCESS_INFO); 

     chomp ($dbName, $host, $userid, $passwd); 
     my $db_connection = DBI->connect($connectionInfo,$userid,$passwd); 
     return $db_connection; 
} 

正如你所看到的,我已經通過了一個數組引用,就像我通常會在Perl(如果一個Perl程序都接受它,我會將其轉換回數組)。現在,這是我調用上述例程並試圖顯示數組的PHP。由於我不知道如何將其轉換回來,所以我發佈了簡單的聲明和echo聲明。

<?php 
     ini_set('display_errors',1); 
     ini_set('display_startup_errors',1); 
     error_reporting(-1); 

     require_once '/usr/src/jsonrpcphp/includes/jsonRPCClient.php'; 
     $myJSONconn2 = new jsonRPCClient('http://localhost:42337/jsonrpc/API/testArray'); 
     echo "Choose Member:<br>"; 
     try 
     {  echo $myJSONconn2->queueMemberList(); 

     } 
     catch (Exception $e) 
     { 
       echo nl2br($e->getMessage()).'<br />'."\n"; 
     } 
?> 

當前輸出在瀏覽器上只顯示Array,沒有別的。

你能幫我把它轉換回數組嗎?

編輯:正如@grebneke建議,我換成echovar_dump這給了我下面的輸出:

array(2) { [0]=> string(5) "messi" [1]=> string(5) "lampard" } 

,當我試圖使用它print_r,這就是我得到:

Array ([0] => messi [1] => rahul) 

這是什麼意思在PHP中?

+0

使用'print_r'或'var_dump'來檢查PHP中的數據,它會告訴你如何繼續。 – grebneke

+0

@grebneke - 編輯輸出的問題 - 這是什麼意思? – rahuL

+0

看到下面的答案 – grebneke

回答

2

根據你的var_dump/print_r輸出,其中第一項爲"messi",第二個是"rehul"$myJSONconn2->queueMemberList()返回一個普通PHP array

$response = $myJSONconn2->queueMemberList(); // $response is now an array 
print $response[0];       // this will print: messi 

或循環播放:

foreach ($response as $data) { 
    print $data; 
} 

我不不知道這是你的期望。但不需要「將其轉換回數組」 - 它已經是的數組。

+0

所以你的意思是$響應是一個數組,所以我可以循環使用'for'或'while'就像我通常會爲PHP數組? – rahuL

+0

是的,這是一個完全正常的PHP數組! – grebneke

+0

非常棒 - 工作。謝謝你,先生!! – rahuL