簡體   English   中英

從轉換后的數據創建數組並在PHP中合並數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM