如果element不在文件的数组中

时间:2017-05-21 17:55:49

标签: php arrays

我目前正在创建一个使用多种语言的网站。我显示单词/句子的方式是通过回显数组中的元素。现在它工作正常,如果元素在数组中,但它将显示“未定义索引” - 如果不是,则显示错误。所以,我必须一直将这些单词添加到数组中,我真的不想这样做。

因此,我想知道,是否可以制作类似

的内容
  • 如果不在数组中,请将'requested'元素添加到txt文件中。

  • 如果未定义的错误添加到txt文件。

我现在正在做的事情的例子:

<?php echo $lang["Address"]; ?>
//Notice: Undefined index: Address in ...

所以,如果我可以将“地址”插入到txt文件中,那就太棒了。如果不可能,那么每次创建新文本时我都需要在数组中添加单词/句子。

  • 可能是错误记录,但“地址”是唯一记录的内容?

3 个答案:

答案 0 :(得分:0)

你可以这样检查。

if(isset($lang["Address"]))
{
   echo $lang["Address"];
}
else
{
   //else part
}

答案 1 :(得分:0)

@Maitray Suthat是对的。这是IF的较短版本。

echo 'Lorem ipsum dolor sit '.(isset($lang["Address"])?$lang["Address"]:'').', consectetur adipiscing elit.';

进一步阅读:http://php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary

更短:

echo 'Lorem ipsum dolor sit '.($lang["Address"]??'').', consectetur adipiscing elit.';

答案 2 :(得分:0)

最简单的翻译功能应该有所帮助:

功能

function __translate($name, $currentLang = 'en') {
    $path = sprintf("trans/%s.php", $currentLang);
    if (!file_exists($path)) {
        throw new Exception('No file for lang:' . $currentLang);
    }
    $lang = include($path);
    if (isset($lang[$name])) {
         return $lang[$name];
    } else {
         file_put_content($currentLang . '_errors.txt', "\n\r". $name, FILE_APPEND);
    }
}

&#39;反式/ en.php&#39;

<?php

return ['address' => 'Your address'];

&#39;反式/ de.php&#39;

<?php
// we don't have translation for address
return [];

使用

<?php echo __translate["Address"]; ?>

最终,您可以检查一些库以进行本地化。