Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将php中的数组传递给ruby?_Php_Ruby_Arrays - Fatal编程技术网

如何将php中的数组传递给ruby?

如何将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

如何将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 '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()的实际返回值只是命令输出的最后一行。