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