1

これが私がこれまでに持っているものです:

$arrayPrices = array(
    translate($lang_type, "A/C System Evaluation") => "19.95",
    translate($lang_type, "A/C Evaluation & Recharge") => "99.00"
);

そして、私の翻訳機能は次のとおりです。

function translate($to_lan, $text) {
if($to_lan == "en") {

    return $text;

} else {

    $translate_feed = @file_get_contents('http://api.microsofttranslator.com/v2/Http.svc/Translate?appId=' . BING_APPID . '&text=' . urlencode($text) . '&from=en&to=' . $to_lan . '');
    $translate = simplexml_load_string($translate_feed);

    return ($translate_feed === false) ? $text : $translate[0];
   }
 }

何らかの理由で、PHP 配列内にその翻訳関数を表示できません。

入力するecho translate($lang_type, "A/C System Evaluation"); と、問題なく動作し、翻訳されます。しかし、その配列で使用すると、空白が返されます。

誰か私に何ができるか考えていますか?

4

3 に答える 3

2

PHP配列のドキュメントから:

キーは整数または文字列のいずれかです。値は任意の型にすることができます。

次のように、最初にキーを文字列変数に入れます。

$var1 = translate($lang_type, "A/C System Evaluation");
$var2 = translate($lang_type, "A/C Evaluation & Recharge");

$arrayPrices = array(
    "$var1" => 19.95
    "$var2" => 29.95
);

それはうまくいくはずです。

于 2012-04-12T23:28:49.617 に答える
1

これは機能しますか:

$arrayPrices[translate($lang_type, "A/C System Evaluation")]= "19.95";
$arrayPrices[translate($lang_type, "A/C Evaluation & Recharge")] = "99.00";
于 2012-04-12T23:29:24.290 に答える
0

一時変数をあまりいじることなく、その製品リストに広範囲に追加できるようにしたいと思うでしょう。これは、次のように配列に対して後処理を実行する状況の 1 つです。

$arrayPrices = array(
    "A/C System Evaluation" => "19.95",
    "A/C Evaluation & Recharge" => "99.00",
    // ... etcetera ...
);

$keys = array_keys( $arrayPrices );    
foreach( $keys as $keyText )
{
    $translatedKeyText = translate($lang_type, $keyText);
    if ( $translatedKey != $keyText )
    {
        $arrayPrices[$translatedKeyText] = $arrayPrices[$keyText];
        unset( $arrayPrices[$keyText] );
    }
}

一時変数を使用する場合は、新しいエントリごとにロジックを元の配列に追加する必要があります。それは私にとってメンテナンスの面倒のように聞こえます。

于 2012-04-12T23:46:27.510 に答える