我正在尝试使用JSON-RPC将数组从Perl传递给PHP。所以这是Perl例程,它构成数组并返回它:
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建议的那样,我将echo
替换为var_dump
,这给了我以下输出:
array(2) { [0]=> string(5) "messi" [1]=> string(5) "lampard" }
当我使用print_r
尝试时,这就是我得到的:
Array ( [0] => messi [1] => rahul )
这在PHP中意味着什么?
答案 0 :(得分:2)
根据您var_dump
/ print_r
的输出,$myJSONconn2->queueMemberList()
返回普通PHP array
,其中第一项为"messi"
,第二项为{{1} }}:
"rehul"
或循环:
$response = $myJSONconn2->queueMemberList(); // $response is now an array
print $response[0]; // this will print: messi
我不知道这是否是你所期待的。但不需要“将其转换回数组” - 已经是一个数组。