[英]Creating array from translated datas and merging an array in PHP
我正在設計一個具有多語言支持的網站。 我們的主要語言是土耳其語。 我不希望在admin插入土耳其語數據時,用其他語言清空其他字段。 因此,當土耳其語數據插入以“ _tr”列結尾時,在外語字段中以“ _en”和“ _de”結尾時,我想從Yandex Translator獲得自動翻譯的數據。 這是我的表結構:
我的數據結構將如下所示:
$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");
我嘗試了這個:
$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;
}
YandexTrApi
函數返回轉換后的數據。 最后,我像這樣使用array_merge
函數:
$data_array = array_merge($translated, $data);
但是它沒有采取這樣的形式:
$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_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(因為您的...
部分可能放在parent_id
鍵之前)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.