繁体   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