2

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

4

2 回答 2

7

数组,在其他语言中也称为列表,是事物的有序集合。在 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 将散列和列表混合为一种Array类型,而 Ruby 没有。

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

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

它们在底层有何不同很难回答,因为语言非常不同,首先数组/哈希是 Ruby 中的对象,而不是 PHP 中的对象。如果您有特定的有针对性的幕后实现细节问题,请提出一个。

于 2012-10-23T10:58:16.567 回答
1

你有没有先阅读To Ruby From PHP

于 2012-10-23T10:57:20.080 回答