【问题标题】:How to access array values inside class object?如何访问类对象内的数组值?
【发布时间】:2011-11-04 00:52:15
【问题描述】:

我在函数中有一个这样的数组:

$value = array("name"=>"test", "age"=>"00");

我在 abc 类中公开了这个 $value。

现在在我的另一个文件中,我想访问这个数组中的值,所以我通过以下方式创建了一个实例:

$getValue = new <classname>;
$getValue->value..

我不确定如何继续,这样我就可以访问该数组中的每个元素。

【问题讨论】:

  • 请发布实际的类定义。

标签: php arrays oop object scope


【解决方案1】:

您提到$value 在函数中,但是是公共的。您能否发布该函数,或澄清您的意思是在函数中声明还是实例化?

如果您正在实例化它,那很好,您可以使用数组键来索引$value,就像任何其他数组一样:

$object = new classname;
$name = $object->value["name"];
$age = $object->value["age"];

// Or you can use foreach, getting both key and value
foreach ($object->value as $key => $value) {
    echo $key . ": " . $value;
}

但是,如果您在函数中声明 public $value,那么这是一个语法错误。

此外,如果您声明 $value(在函数内)没有 public 修饰符,则其 scope 仅限于该函数,并且不能是 public。该数组将在函数结束时超出范围,并且出于所有意图和目的将不复存在。

如果这部分看起来令人困惑,我建议阅读visibility in PHP

【讨论】:

    【解决方案2】:

    就像你通常使用数组一样。

    $getValue = new yourClass();
    $getValue->value['name'];
    

    【讨论】:

    • 他还说 $value 是他类中的公共变量,因此可以访问。
    • @Rob 我明白了,但他说 class 所以class abc { public $var; $this-&gt;var['test'] = '1'; } $object = new abc(); echo $object-&gt;var['test']; //Outputs 1
    • 感谢你们俩。 @rob,对不起,我没有让你编辑问题和投票。
    【解决方案3】:

    使用代码

    foreach($getValue->value as $key=>$value)
    

    【讨论】:

      【解决方案4】:
          <?php
              interface Nameable {
                  public function getName($i);
                  public function setName($a,$name);
              }
              class Book implements Nameable {
                  private $name=array();
                  public function getName($i) {
                      return $this->name[$i];
                  }
                  public function setName($i, $name) {
                      return $this->name[$i] = $name;
                  }
              }
      
              $interfaces = class_implements('Book');
      
              if (isset($interfaces['Nameable'])) {
                  $bk1 = new Book;
                  $books = array('bk1', 'bk2', 'bk3', 'bk4', 'bk5');
                  for ($i = 0; $i < count($books); $i++)
                      $bk1->setName($i, $books[$i]);
                  for ($i = 0; $i < count($books); $i++)
                      echo '// Book implements Nameable: ' . $bk1->getName($i) . nl();
              }
      ?>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-12-29
        • 2021-08-25
        • 1970-01-01
        • 2015-05-04
        • 2020-09-19
        • 1970-01-01
        • 1970-01-01
        • 2018-11-22
        相关资源
        最近更新 更多