【问题标题】:PHP load array values from file and return them as arrayPHP从文件中加载数组值并将它们作为数组返回
【发布时间】:2013-11-24 07:46:24
【问题描述】:

我有文件:

zh.php

<?php
$lang['word'] = 'word';
$lang['text'] = 'text';

index.php

<?php
function load($file) {
    include $file . '.php';
    echo $lang['word'];
    echo $lang['text'];
}

load('en');

问题:

如何从en.php获取数组值并使用load()将它们作为数组返回

如何处理文件以在 load() 中返回每个数组值,以便在 index.php 中使用它,如下所示:

   echo $lang['word'];

我知道包含函数视图文件在全局范围内,但变量在本地范围内。我正在寻找“以数组形式返回”的解决方案。

编辑: 我想将文件 en.phpde.phpru.php 中的语言分开......然后将它们加载到 index.php有负载。然后检索它们并回显为$lang['text']

【问题讨论】:

  • 您无法访问这些变量,因为它们超出了范围 - 开始使用 OOP。
  • @Stanyer 我对 OOP 解决方案持开放态度

标签: php arrays include


【解决方案1】:

英格。米哈尔·胡达克

你的代码是正确的

<?php
function load($file) {
    include $file . '.php';
    return $lang;
}

print_r(load('en'));

【讨论】:

    【解决方案2】:

    您可以简单地在 en.php 文件中执行 return $lang,然后将其分配给加载函数中的变量:$load = include $file . '.php';

    【讨论】:

      【解决方案3】:

      en.php(或 lang_en.php)

      <?php
          class lang_en {
              var $lang = array();
              public function __construct() {
                  $this->lang['word'] = 'word';
                  $this->lang['text'] = 'text';
              }
              public function get_lang() {
                  return $this->lang;
              }
          }
      ?>
      

      index.php

      <?php
          function load($file) {
              include $file . '.php';
              $class_name     = 'lang_' . $file;
              $lang_instance  = new $class_name();
              $get_lang       = $lang_instance->get_lang();
              echo $get_lang['word'];
              echo $get_lang['text'];
          }
          load('en');
      ?>
      

      未经测试,现在还早 - 但这应该可以...

      【讨论】:

      • 我想将语言字符串分成文件 en.php、ru.php。然后使用 index.php 中的函数从这些文件中加载它们。
      • 答案是什么。唯一的区别是文件名以lang_为前缀
      • en.php 应该只有字符串数据库,然后使用函数从文件中加载它们
      【解决方案4】:

      您将文件 en.php 包含在函数中,因此 $lang 是该函数的本地文件,您可以直接使用它们。

      function load($file) {
          include $file . '.php';
          echo $lang['word'];
          echo $lang['text'];
      }
      

      如果你在函数之外包含文件,那么$lang 将是函数的global,你可以使用全局关键字访问它。

      喜欢:

      include 'en.php';
      function load() {
          global $lang;
          echo '<br>'.$lang['word'];
          echo '<br>'.$lang['text'];
      }
      

      【讨论】:

        【解决方案5】:

        您可以使用global 声明将$lang 设为全局变量:

        function load($file) {
            global $lang;
            include $file . '.php';
            echo $lang['word'];
            echo $lang['text'];
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2022-10-12
          • 2011-10-27
          • 2012-02-15
          • 2016-08-18
          • 2019-05-10
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多