【问题标题】:php array key from function来自函数的php数组键
【发布时间】:2016-04-14 10:00:38
【问题描述】:

我正在调查一个问题,我想以一般方式解决它。 要获取 API 响应的翻译,我使用以下代码:

$array['name'] = getTranslation($key);

这会根据用户设置获取翻译,并可能导致以下结果返回带有翻译的键或仅返回键。这使得数组如下:

//user only can get the key
$array['name']['key'] = 'key';

//user can get both key and translation
$array['name']['key'] = 'key';
$array['name']['translation'] = 'translation';

这个解决方案运行良好,但不幸的是它必须改变。翻译键必须始终放在键中,并且翻译必须放在_key中。但前提是用户设置使他们能够获得翻译。这导致以下结果:

$array['name'] = 'key';
$array['_name'] = 'translation';

或者只是:

 $array['name'] = 'key';

不幸的是,翻译被广泛使用,如果用户可以翻译,我不想检查每个方法。

所以现在我想知道,是否有办法在全球范围内解决这个问题。理想情况下是创建一种方法来解决它:

$arraykey = 'name';
$array[$arraykey] = getTranslations('translationkey', $arraykey);

它最终会出现在数组中:

$array['name'] = 'translationkey';
$array['_name'] = 'translated value';

【问题讨论】:

  • 很难理解所有这些东西的目的,因此很难回答。您似乎在问如何简化检查用户可以访问的数据类型。如果你能更清楚地把问题集中在那个问题上,那么你可能会得到一些答案。

标签: php arrays methods


【解决方案1】:

从创建新函数的建议开始,您可以尝试以下方法:

function getTranslations($translationKey, $arrayKey)
{
     $translation = getTranslation($translationKey);

     $result = array($arrayKey => $translation['key']);
     if (/*user settings enabled translations*/) {
         $result['_' . $arrayKey] = $translation['translation'];
     }

     return $result;
}

// usage
$translation = getTranslations('namekey', 'name');

// if you have more translations in the final array then you can use array_merge
$translation = getTranslations('namekey', 'name');
$translation = array_merge($translation, getTranslations('phonekey', 'phone'));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-07
    • 2014-07-14
    • 2019-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多