考虑这个人为的例子。如果我想将英语转换为西班牙语,以下数组可以正常工作。
$translate = array( 'one' => 'uno',
'two' => 'dos',
'three' => 'tres'
);
echo $translate['one'];
但是我如何从西班牙语转换成英语呢?这可以通过关联数组来完成,还是有更好的方法来做到这一点?
考虑这个人为的例子。如果我想将英语转换为西班牙语,以下数组可以正常工作。
$translate = array( 'one' => 'uno',
'two' => 'dos',
'three' => 'tres'
);
echo $translate['one'];
但是我如何从西班牙语转换成英语呢?这可以通过关联数组来完成,还是有更好的方法来做到这一点?
echo array_search ('uno', $translate);
但是,如果您想反过来翻译多个单词以重新映射数组,它可能会更快:
$translate_reverse = array_flip ($translate);
echo $translate_reverse ['uno'];
虽然您可以搜索数组,但它是 O(n) 而不是 O(1) 的键。所以我会这样做:
$english_to_spanish = array('one' => 'uno', ...);
$spanish_to_english = array_flip($english_to_spanish);
如果您有一个巨大的列表,那么最好使用数据库来存储索引的两个列。
如果是一对一的映射,可以使用下面的方法来获取英文单词:
echo array_search("tres", $translate);
但是,如果它是一对多的,array_search 将返回一个键(西班牙语单词)数组,您必须以某种方式从中进行选择。