【问题标题】:Accessing array element within public function in a php class在 php 类的公共函数中访问数组元素
【发布时间】:2017-10-08 15:07:26
【问题描述】:

试图弄清楚如何使用 PHP 类中的公共函数处理数组元素。已经审查了类似的问题,但无法解决问题。以下是我目前所拥有的。

class myClass
{
    public $inputNumber = 27;
    public $inputArray = array(1, 2, 4);
    public $outputArray = array($inputArray[0]*$inputNumber, $inputArray[1]*$inputNumber, $inputArray[2]*$inputNumber);

    public function printOutput()
    {
        return "1st value is " . $this->outputArray[0] . "<br>";
        return "2nd value is " . $this->outputArray[1] . "<br>";
        return "3rd value is " . $this->outputArray[2] . "<br>";
    }
}

$obj = new myClass;

echo $obj->printOutput();

【问题讨论】:

  • 你只能在一个函数中return 一次,所以这是行不通的。如果您需要返回$this-&gt;outputArray,则访问调用元素中的值(或者只需echoprint 而不是return,如果适合)
  • 如何在构造函数中分配值: function __construct(){ $this->outputArray = array(...);} 并删除第二个和第三个返回值。连接字符串并只返回一次。
  • 而您缺少参考文献(this->)。

标签: php arrays class


【解决方案1】:

您也可以使用已定义的值。其他明智的好方法是传入构造函数

<?php

class myClass
{
public $inputNumber = 27;
public $inputArray = array(1, 2, 4);
public $outputArray = array();

function __construct() {
   $this->outputArray= array($this->inputArray[0]*$this->inputNumber, 
                             $this->inputArray[1]*$this->inputNumber, 
                             $this->inputArray[2]*$this->inputNumber
                             );
}
public function printOutput()
{
    $output = "1st value is " . $this->outputArray[0] . "<br>";
    $output .= "2nd value is " . $this->outputArray[1] . "<br>";
    $output .= "3rd value is " . $this->outputArray[2] . "<br>";
    return $output;
 }
}

$obj = new myClass;
echo $obj->printOutput();

这里正在运行 sn-p:https://ideone.com/miOQJB

【讨论】:

  • 谢谢你,Ankur。你提供了一些我可以使用的东西。
【解决方案2】:
class myClass
{
    public $inputNumber = (int) 27;
    public $inputArray = array();
    public $outputArray = array();

   function __construct($inputNumber = 27, $inputArray = array(1,2,4)) {
       $this->inputNumber = (int) $inputNumber;
       $this->inputArray = (array) $inputArray;
       $this->outputArray= array($this->inputArray[0]*$this->inputNumber, $this->inputArray[1]*$this->inputNumber, $this->inputArray[2]*$this->inputNumber);
    }

    public function printOutput()
    {
        return "1st value is " . $this->outputArray[0] . "<br>"
        . "2nd value is " . $this->outputArray[1] . "<br>"
        . "3rd value is " . $this->outputArray[2] . "<br>";
    }
}

$obj = new myClass;

echo $obj->printOutput();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-18
    • 1970-01-01
    • 2010-09-28
    • 2018-08-14
    • 1970-01-01
    • 2020-08-08
    • 1970-01-01
    相关资源
    最近更新 更多