PHP从不同的文件访问数组

PHP从不同的文件访问数组,php,arrays,class,include,require,Php,Arrays,Class,Include,Require,我在文件中创建了一个包含所有HTML颜色的数组(我在这里稍微缩短了列表) 这里我调用数组并将所有颜色放入select语句中 <?php require_once('../Class/content_part.class.php'); include_once('../Include/Colors_Array_inc.php'); class contentSettings extends content_part { public function render(){

我在文件中创建了一个包含所有HTML颜色的数组(我在这里稍微缩短了列表)


这里我调用数组并将所有颜色放入select语句中

<?php 

require_once('../Class/content_part.class.php');
include_once('../Include/Colors_Array_inc.php');


class contentSettings extends content_part
{

public function render(){

    $result = '

        <div class="Content">
            <select>'; 

            $length = count($AllColorsArray);

            for($i = 0; $i < length; $i++){
                $result .= '<option>' . $AllColorsArray[$i] . '</option>';
            }

    $result .= '</select></div>';

    return $result;
}
}
 ?>

我以前在我的另一个项目中做过,它在那里工作。 这里唯一的区别是我调用和使用数组的第二个文件在一个类中

有人知道为什么这不起作用吗?还有一种解决方案。

您错过了:


在($i=0;$i

另外,
$AllColorsArray
应作为属性创建:

class contentSettings extends content_part
{

   public $AllColorsArray=array(
    'AliceBlue',
    'AntiqueWhite',
    'Aqua',
    'Aquamarine',   
    'Teal',     
    'Thistle',      
    'Tomato'        
);

public function render(){

    $result = '

        <div class="Content">
            <select>'; 

            $length = count($this->AllColorsArray);

            for($i = 0; $i < length; $i++){
                $result .= '<option>' . $this->AllColorsArray[$i] . '</option>';
            }

    $result .= '</select></div>';

    return $result;
}
}
class contentSettings扩展内容部分
{
public$AllColorsArray=数组(
“AliceBlue”,
“古董白”,
“水”,
“海蓝宝石”,
"水鸭",,
"蓟",,
“西红柿”
);
公共职能{
$result='1
'; 
$length=count($this->AllColorsArray);
对于($i=0;$iAllColorsArray[$i].';
}
$result.='';
返回$result;
}
}

它是变量范围;您的
$AllColorsArray
在函数外部声明,因此函数无法访问它。您需要将其作为参数或全局变量传入。或者,如果您看起来像在使用类,您也可以将其定义为类变量,在构造函数中设置,然后使用它y、 我的问题已经解决了。谢谢大家帮助我!如果这里的一个答案解决了你的问题,那么你可以接受它;如果你自己解决了,那么你可以添加你自己的答案,并在你能够接受的时候接受它。我还不能接受答案,它很快就解决了。需要再等6分钟。但当然,我肯定会的把它解决了。啊,谢谢你-这将是网站上少了一个未解决的问题!什么是全局的,它是什么?你能解释或知道一个链接吗?我在这里学习不复制粘贴。非常感谢。我已经把这个链接放在了答案中。它被称为变量范围:基本上PHP就是这样决定的,哪个变量是可用的E代码的哪个部分。请参阅上面的“安德鲁西的评论”。在类上下文中使用 Global 确实是一个糟糕的编程实践。您可以考虑的是注入依赖性(将数组传递给类)或使数组通过其自己的类可用。(可能是一个抽象类,带有获取数组的抽象方法)。啊,很抱歉没有注意到,是该站点的新手。非常感谢。不再需要帮助。谢谢@BoldewynYes,我也遇到了这个错误。虽然这不是我所说的问题的解决方案。但是谢谢你的帮助!你的意思是在同一个文件中使用数组吗?是的。作为属性。你可以访问属性,如
$this->property
。您可以有一个方法(类的函数)来设置数组值,如
setAllColorsArray($yourColorsArray)
。谢谢您的建议,但数组太长了。这只是我喜欢的东西,尽管@Manolo感谢您的建议
public function render() {
    global $AllColorsArray;
    [...]
}
class contentSettings extends content_part
{

   public $AllColorsArray=array(
    'AliceBlue',
    'AntiqueWhite',
    'Aqua',
    'Aquamarine',   
    'Teal',     
    'Thistle',      
    'Tomato'        
);

public function render(){

    $result = '

        <div class="Content">
            <select>'; 

            $length = count($this->AllColorsArray);

            for($i = 0; $i < length; $i++){
                $result .= '<option>' . $this->AllColorsArray[$i] . '</option>';
            }

    $result .= '</select></div>';

    return $result;
}
}