如何将php中的数组传递给ruby?
如何将php数组作为参数传递给ruby脚本,以便ruby脚本能够读取php数组 您可以将其序列化为YAML或JSON。您可以将其序列化为YAML或JSON。您可以使用JSON:如何将php中的数组传递给ruby?,php,ruby,arrays,Php,Ruby,Arrays,如何将php数组作为参数传递给ruby脚本,以便ruby脚本能够读取php数组 您可以将其序列化为YAML或JSON。您可以将其序列化为YAML或JSON。您可以使用JSON: $ cat f1.php <?php $a = array(1, 2, 3); $cmd = 'ruby f2.rb \'' . json_encode($a) . '\''; printf("%s\n", `$cmd`); ?> $ cat f2.rb require 'rubygems' require
$ cat f1.php
<?php
$a = array(1, 2, 3);
$cmd = 'ruby f2.rb \'' . json_encode($a) . '\'';
printf("%s\n", `$cmd`);
?>
$ cat f2.rb
require 'rubygems'
require 'json'
s = JSON.parse ARGV[0]
puts s
puts s.class
$ php f1.php
1
2
3
Array
$cat f1.php
$cat f2.rb
需要“rubygems”
需要“json”
s=JSON.parse ARGV[0]
放置
把s.class
$php f1.php
1.
2.
3.
排列
您可以使用JSON:
$ cat f1.php
<?php
$a = array(1, 2, 3);
$cmd = 'ruby f2.rb \'' . json_encode($a) . '\'';
printf("%s\n", `$cmd`);
?>
$ cat f2.rb
require 'rubygems'
require 'json'
s = JSON.parse ARGV[0]
puts s
puts s.class
$ php f1.php
1
2
3
Array
$cat f1.php
$cat f2.rb
需要“rubygems”
需要“json”
s=JSON.parse ARGV[0]
放置
把s.class
$php f1.php
1.
2.
3.
排列
类似这样的东西
require 'json'
data = ARGV[0]
result = JSON.parse(data)
像这样的
require 'json'
data = ARGV[0]
result = JSON.parse(data)
您可以尝试自己序列化它
1,67,12,320,341,901,77
0, 1, 2, 3, 4, 5, 6
您可以使用phps explode函数来执行此操作。将数组放入一个隐藏标记中,让ruby分解数组。您可以自己尝试序列化它
1,67,12,320,341,901,77
0, 1, 2, 3, 4, 5, 6
您可以使用phps explode函数来执行此操作。将数组放入一个隐藏标记中,让ruby分解数组。JSON是一个更好的主意,但是如果必须使用PHP的
serialize()
函数,可以使用此库在ruby中取消序列化:JSON是一个更好的主意,但是如果必须使用PHP的serialize()
函数您可以使用以下库在Ruby中取消序列化:或任何中立的序列化格式(XML、CSV等)。好的,我将数组序列化为JSON…并将其作为参数传递给Ruby脚本…但是Ruby因为双引号而抱怨。。。。此外,我如何解析JSON并用ruby反序列化它?或者任何中立的序列化格式(XML、CSV等)。好的,我将数组序列化为JSON…并将其作为参数传递给ruby脚本…但是ruby因为双引号而抱怨。。。。另外,我如何解析JSON并在ruby中反序列化它呢。。。。我正在用这种方法。。。但是,PHPF1.php没有“放置”123mm…嗯,你的意思是不能重现我的示例?也许我们应该稍微简化一下,然后尝试:$ruby f2.rb'[1,2,3]'这样做。。。。但是当我执行exec(“ruby f2.rb'[1,2,3]”)时,php脚本会运行,并且没有ruby“puts”奇怪…它与printf一起工作(“%s\n”,$cmd
);backtick运算符相当于shell_exec(),而不是exec(),但请注意exec()的第二个可选参数。exec()的实际返回值只是命令输出的最后一行。是。。。。我正在用这种方法。。。但是,PHPF1.php没有“放置”123mm…嗯,你的意思是不能重现我的示例?也许我们应该稍微简化一下,然后尝试:$ruby f2.rb'[1,2,3]'这样做。。。。但是当我执行exec(“ruby f2.rb'[1,2,3]”)时,php脚本会运行,并且没有ruby“puts”奇怪…它与printf一起工作(“%s\n”,$cmd
);backtick运算符相当于shell_exec(),而不是exec(),但请注意exec()的第二个可选参数。exec()的实际返回值只是命令输出的最后一行。