PHP地图:来回

时间:2012-05-15 17:46:48

标签: php

考虑这个人为的例子。如果我想将英语转换为西班牙语,以下数组工作正常。

$translate = array( 'one'    => 'uno',
                    'two'    => 'dos',
                    'three'  => 'tres'
            );

echo $translate['one'];

但是如何将西班牙语翻译成英语?这可以通过关联数组完成,还是有更好的方法来做到这一点?

3 个答案:

答案 0 :(得分:3)

echo array_search ('uno', $translate);

但是,如果你想翻译多个单词以重新映射数组,它可能会更快:

$translate_reverse = array_flip ($translate);
echo $translate_reverse ['uno'];

答案 1 :(得分:2)

虽然您可以搜索数组,但它是O(n)而不是O(1)。所以我会这样做:

$english_to_spanish = array('one' => 'uno', ...);
$spanish_to_english = array_flip($english_to_spanish);

如果你有一个庞大的列表,那么最好使用数据库来存储索引的两列。

答案 2 :(得分:1)

如果是一对一的映射,您可以使用以下内容获取英文单词:

echo array_search("tres", $translate);

但是,如果它是一对多,array_search将返回一个键的数组(西班牙语单词),你必须从某种程度上选择。