如何在php中将数组传递给类?

如何在php中将数组传递给类?,php,class,Php,Class,所以,当我调用这个函数ispis()时,它什么也不做,但当我在函数_构造函数中回显时,它会显示输入的所有内容的正确值。同样,当我评论上面的前三行时,/$daniel=新用户(“ivan”,“22”);行并取消注释,ispis()工作正常。如果有人能向我解释为什么会发生这种事,那就太好了。Tnx prevance:)从代码的外观来看,您正试图将两个新用户实例传递给一个新用户(“daniel”) 所以用户基本上需要4个参数(年龄、姓名、身高、体重)。您正确地创建了Luka和Ivan,但在尝试创建Da

所以,当我调用这个函数ispis()时,它什么也不做,但当我在函数_构造函数中回显时,它会显示输入的所有内容的正确值。同样,当我评论上面的前三行时,/$daniel=新用户(“ivan”,“22”);行并取消注释,ispis()工作正常。如果有人能向我解释为什么会发生这种事,那就太好了。Tnx prevance:)

从代码的外观来看,您正试图将两个新用户实例传递给一个新用户(“daniel”)

所以用户基本上需要4个参数(年龄、姓名、身高、体重)。您正确地创建了Luka和Ivan,但在尝试创建Daniel时,您将这两个用户作为参数传递。当它想要年龄、名字、身高和体重时,你给它卢卡和伊万

如果只想将数组传递给构造函数,只需将其作为新实例上的参数传递即可:

 class User{     
      public $name ;
      public $age ;
      public $height ;
      public $weight ;   

      function __construct($name,$age,$height,$weight){      
          $this->age = $age;
          $this->name = $name;
          $this->height = $height;
          $this->weight = $weight;
     }

     public function ispis(){       
         echo $this->age;       
     }

}

$question_array = [new User ("Ivan","22","174","68"), new 
User("Luka","23","174","68") ];

$daniel = new User($question_array);

//$daniel = new User("ivan","22");

$daniel->ispis();

Robert刚刚回答,他的方法是我在个人MVC中用来定义构造的方法,或者以另一种方式,我在MVC中也经常使用这个方法:p。。。 顺便说一句,我想伊万,你在课堂上搞混了

<?php
class User {

    public $name;
    public $age;
    public $height;
    public $weight;

    function __construct($args){

        $this->age = $args['age'];
        $this->name = $args['name'];
        $this->height = $args['height'];
        $this->weight = $args['weight'];

    }

    function getAge() {
        return $this->age;
    }
}

$question_array = [
    'name' => 'Daniel',
    'age' => '22',
    'weight' => '174',
    'height' => '68'
];

$daniel = new User($question_array);
echo $daniel->getAge(); // 22

?>
类用户{
公共名称;
公众年龄;
公众高度;;
公费$weight;
函数构造($array){
if(is_数组($array)){
foreach($k=>v的数组){
$this->$k=$v;
}
}
}
公共功能ispis(){
打印“名称:”.$this->NAME.“年龄:”.$this->AGE.“身高:”.$this->HEIGHT.“体重:”.$this->WEIGHT.
; } } $arrayOne=['name'=>“Ivan”、'age'=>“22”、'height'=>“174”、'weight'=>“68”]; $arrayTwo=['name'=>“Luke”、'age'=>“23”、'height'=>“174”、'weight'=>“68”]; $ivan=新用户($arrayOne); $luka=新用户($arrayTwo); $ivan->ispis(); $luka->ispis();
您的问题似乎有点模棱两可,但您可能希望从参数数组中创建一个对象

class User{

public $name ;
public $age;
public $height ;
public $weight ;

 function __construct($array){

    if (is_array($array)){
        foreach($array as $k=>$v){
            $this->$k = $v;
        }
     }

  }
  public function ispis(){

      print 'NAME :' .$this->name .' AGE : ' .$this->age.' HEIGHT : ' .$this->height .' WEIGHT : ' .$this->weight.'<br>';

  }

}

 $arrayOne = ['name'=>"Ivan",'age'=>"22",'height'=>"174",'weight'=>"68"];
 $arrayTwo = ['name'=>"Luke",'age'=>"23",'height'=>"174",'weight'=>"68"];

  $ivan = new User($arrayOne);
  $luka = new User($arrayTwo);
  $ivan->ispis();
  $luka->ispis();

$question\u数组
用户
对象的数组。那么你到底期望什么呢
$daniel=新用户($question\u array)要做什么?当您只将一个参数传递给最后一个用户实例时,您在构造函数上定义了4个参数???需要4个参数?你怎么说我只通过一个?new User()@lotfiolakehal中有4个参数,而且,
$daniel=new User(“ivan”,“22”)“工作正常”。根据您的PHP版本,如果不是致命错误,您最多也会收到一个警告。我希望它打印每个对象的每个传递参数,但在函数ispis()@PatrickQNote中,现在构造函数接受一个参数
$args
,对于用户对象在创建时需要什么,它没有给出任何指示或提示。@Progrock是的,这不完全是我个人应该如何做的,但问题是“如何在php中将数组传递给类”
<?php
class User {

    public $name;
    public $age;

    public function __construct($name, $age)
    {
        $this->name = $name;
        $this->age  = $age;
    }

    public function echoAge()
    {
        echo $this->age;
    }
}

$args  = ['Leonard', 21];
$bones = new User(...$args);
$bones->echoAge();
21