从转换数据创建数组并在PHP中合并数组
我正在设计一个支持多种语言的网站。我们的主要语言是土耳其语。我不想在管理员插入土耳其语数据时,用外语清空其他字段。因此,当土耳其语数据插入以“_tr”列结尾时,在外语字段中以“_en”和“_de”结尾,我想从Yandex Translator获取自动翻译的数据。 以下是我的表格结构: 我的数据结构如下所示,将插入:从转换数据创建数组并在PHP中合并数组,php,arrays,array-merge,Php,Arrays,Array Merge,我正在设计一个支持多种语言的网站。我们的主要语言是土耳其语。我不想在管理员插入土耳其语数据时,用外语清空其他字段。因此,当土耳其语数据插入以“_tr”列结尾时,在外语字段中以“_en”和“_de”结尾,我想从Yandex Translator获取自动翻译的数据。 以下是我的表格结构: 我的数据结构如下所示,将插入: $data = array(... 'parent_id' => 234, 'date' => "2014-08-31 23:07:47", 'status' =>
$data = array(... 'parent_id' => 234, 'date' => "2014-08-31 23:07:47", 'status' => 1);
我想加上“…”如下:
$translated = array('fruit_tr' => "Elma", 'fruit_en' => "Apple", 'fruit_de' => "Apfel", 'color_tr' => "Kırmızı", 'color_en' => "Red", 'color_de' => "Rot");
$data_array = array('fruit_tr' => "Elma", 'fruit_en' => "Apple", 'fruit_de' => "Apfel", 'color_tr' => "Kırmızı", 'color_en' => "Red", 'color_de' => "Rot", 'parent_id' => 234, 'date' => "2014-08-31 23:07:47", 'status' => 1);
我试过这个:
$from_turkish = array('fruit' => "Elma", 'color' => "Kırmızı");
public function Translate ($from_turkish) {
$langs = array("tr", "en", "de");
$translated = array();
foreach ($langs as $lang){
foreach ($from_turkish as $field_name => $value) {
$translated[] = array($field_name.'_'.$lang => YandexTrApi($value, 'tr', $lang));
}
}
return $translated;
}
API
函数返回翻译后的数据。最后,我使用了array\u merge
函数,如下所示:
$data_array = array_merge($translated, $data);
但它的形式并非如此:
$translated = array('fruit_tr' => "Elma", 'fruit_en' => "Apple", 'fruit_de' => "Apfel", 'color_tr' => "Kırmızı", 'color_en' => "Red", 'color_de' => "Rot");
$data_array = array('fruit_tr' => "Elma", 'fruit_en' => "Apple", 'fruit_de' => "Apfel", 'color_tr' => "Kırmızı", 'color_en' => "Red", 'color_de' => "Rot", 'parent_id' => 234, 'date' => "2014-08-31 23:07:47", 'status' => 1);
array\u merge($translated,$data)
很好,$translated+$data
在这种情况下会给出相同的结果,但是
$translated[] = array($field_name.'_'.$lang => YandexTrApi($value, 'tr', $lang));
…这样,您将在$translated
数组中推送新数组。您只需添加新密钥-请尝试以下操作:
$translated[$field_name.'_'.$lang] = YandexTrApi($value, 'tr', $lang);
同样,像这样嵌套的
foreach()
循环将为您提供稍微不同的顺序,但我想您不需要它来匹配db(因为您的..
部分可能会放在父id
键之前)。为什么不为默认设置一列并确保始终填充它?然后在查询首选语言列是否为空时,返回到默认值?@Anthony-当我们有默认列,如水果
,颜色
,然后填充,如水果
,颜色
,这会导致检索数据时出现问题。因为当使用$lang->selected
像$row[“fruit{$lang->selected}”
一样时,程序搜索水果,但没有。另一方面,这样的编码并没有实际的好处。非常感谢。现在我注意到了。这是解决我问题的好办法。