Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.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
Ruby与PHP在数组和散列中的差异_Php_Ruby - Fatal编程技术网

Ruby与PHP在数组和散列中的差异

Ruby与PHP在数组和散列中的差异,php,ruby,Php,Ruby,经过多年的PHP编程,我刚刚开始学习Ruby。我想知道Ruby中的数组与PHP数组有何不同,以及它与Ruby中的散列有哪些相似之处/不同之处。您是否先阅读了?数组,在其他语言中也称为列表,是事物的有序集合。在PHP中是这样的: array('foo', 'bar', 'baz') 在Ruby中,这是: ['foo', 'bar', 'baz'] 您可以使用数字索引访问它们:$arr[0]/arr[0] 散列在PHP中称为关联数组。它们由键和值组成: array('foo' => 'ba

经过多年的PHP编程,我刚刚开始学习Ruby。我想知道Ruby中的数组与PHP数组有何不同,以及它与Ruby中的散列有哪些相似之处/不同之处。

您是否先阅读了

数组,在其他语言中也称为列表,是事物的有序集合。在PHP中是这样的:

array('foo', 'bar', 'baz')
在Ruby中,这是:

['foo', 'bar', 'baz']
您可以使用数字索引访问它们:
$arr[0]
/
arr[0]

散列在PHP中称为关联数组。它们由键和值组成:

array('foo' => 'bar', 'baz' => 42)
{ 'foo' => 'bar', 'baz' => 42 }
实际上,这两种类型在PHP中都是关联数组,分别使用数字键或字符串键。在PHP中,它们使用相同的语言结构和类型,在包括Ruby在内的其他语言中,它们是不同的类型。PHP将散列和列表混合到一个
数组
类型中,Ruby没有

与Haskell等语言不同,列表必须是同质的,哈希/数组在PHP和Ruby中可以包含任何类型的混合值:

array('foo' => 'bar', 'baz' => array(42, 7), 'blerg' => array(array(array())))
{ 'foo' => 'bar', 'baz' => [42, 7], 'blerg' => [[[]]] }

它们之间的区别很难回答,因为语言非常不同,首先数组/哈希是Ruby中的对象,而不是PHP中的对象。如果您有一个特定的“机罩下目标”实施细节问题,请提出一个。

您希望答案的深度如何?从表面上看,它们是完全不同的,但表面上的相似之处很容易解释。同样在PHP中,您可以将两者混合在一个数组中,如
array('foo','bar','baz'=>'qux')
哈希如何像在关联数组中一样将哈希和数组作为值?@rkm抱歉?你的意思是像
{'foo'=>['bar',42]}
?是的..但是更嵌套的东西像{'db1'=>{'table1'=>['field1','field2'],'table2'=>['field1','field2']},'db2'=>{'table'=>['field1','field2']}@rkm是的,当然可以。数组或散列中的值可以是数组或散列,就像在PHP中一样。