【问题标题】:Php foreach replace values inside arrayphp foreach 替换数组中的值
【发布时间】:2017-05-08 07:45:10
【问题描述】:

我尝试创建一个 Helper 函数,它将语言的短名称替换为它们的全名。

我有一个看起来像这样的常量文件(使用 laravel 这就是常量看起来像这样的原因):

<?php

return [
    'languages' => [
        'names' => [
            'Bulgarian' => 'bg',
            'Danish' => 'da',
            'German' => 'de',
            'English' => 'en'
            ...
        ],
    ]
];

到目前为止,我的函数如下所示:

public static function replaceName($string = '')
{
    $langName = Config::get('constants.languages.names');
    foreach($langName as $langKey => $langValue)
    {
        $search  = array($langValue);
        $replace = array($langKey);
    }
    return str_replace($search, $replace, $string);
}

但它仍然没有任何想法?

【问题讨论】:

  • 你想用'de'替换'German'?然后做return str_replace(array_keys( $langName), $langName, $string); 否则return str_replace($langName,array_keys( $langName), $string);
  • 不,我想用德语替换 de
  • 你现在有多少个单词有de 部分?
  • 在我的情况下只有一个别担心:)

标签: php arrays laravel loops replace


【解决方案1】:

您可以将array_search 用作:

array_search('de', Config::get('constants.languages.names')) // returns German

来自docs

在数组中搜索给定的值,如果成功则返回第一个对应的键。

【讨论】:

    【解决方案2】:

    去罗马的一种方式。

    public static function replaceName($string = '')
    {
      $langName = Config::get('constants.languages.names');
      foreach($langName as $langKey => $langValue)
      {
        $search[]  = " $langValue ";
        $replace[] = " $langKey ";
      }
      return str_replace($search, $replace, $string);
    }
    

    它只用前后的空格替换完整的单词!

    我们不想把Ben变成BEnglish! ;) 如果不需要,请删除空格。

    #############################################

    $string只有de作为内容时,那么:

    public static function replaceName($string = '')
    {
      $langName = array_flip(Config::get('constants.languages.names'));
      return isset($langName[$string])?$langName[$string]:$string;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-06
      • 1970-01-01
      • 2011-10-08
      • 2017-12-04
      • 2013-08-31
      • 1970-01-01
      • 1970-01-01
      • 2016-07-19
      相关资源
      最近更新 更多