Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么赢了';shuffle函数在PHP类中不起作用吗?_Php_Oop_Function_Shuffle - Fatal编程技术网

为什么赢了';shuffle函数在PHP类中不起作用吗?

为什么赢了';shuffle函数在PHP类中不起作用吗?,php,oop,function,shuffle,Php,Oop,Function,Shuffle,为什么它不洗牌数组,让我每次都得到一个随机结果 class greeting { public $greet = array('hi','hello'); shuffle($greet); } $hi = new greeting; echo $hi->greet[1]; 我的代码有什么问题吗?任何计算都不能在方法外、类内执行 class greeting { public $greet = array('hi','hello'); function __construct(

为什么它不洗牌数组,让我每次都得到一个随机结果

class greeting {
public $greet = array('hi','hello');
shuffle($greet);
}
$hi = new greeting;
echo $hi->greet[1];

我的代码有什么问题吗?

任何计算都不能在方法外、类内执行

class greeting {
   public $greet = array('hi','hello');
   function __construct()
   {
     shuffle($this->greet);
   }
}

$hi = new greeting;
echo $hi->greet[1];

任何计算都不能在方法外部、类内部执行

class greeting {
   public $greet = array('hi','hello');
   function __construct()
   {
     shuffle($this->greet);
   }
}

$hi = new greeting;
echo $hi->greet[1];

如果您更改它,使洗牌在构造函数中,它应该可以正常工作

class greeting {

  public $greet = array('hi','hello');

  function __construct(){
    shuffle($this->greet);
  }
}

如果您更改它,使洗牌在构造函数中,它应该可以正常工作

class greeting {

  public $greet = array('hi','hello');

  function __construct(){
    shuffle($this->greet);
  }
}

在类块中,您只能定义常量、属性(都具有固定值)和方法。您不能将代码放在该块中,代码只能放在方法(也称为函数)中。

在类块中,您只能定义常量、属性(都具有固定值)和方法。您不能将代码放入该块,代码只能放入方法(又名函数)中。

还要注意的是,即使放入构造函数中,代码看起来也不像是在洗牌,但它确实是。这只是因为数组中只有2个项,它们被重新排列成相同的原始顺序。感谢您提供的解决方案,一个解释将帮助我更好地理解为什么这样做。@在类中执行的Matthew代码必须驻留在一个方法中
\u construct
是创建对象时调用的方法的名称。要了解更多信息,我建议查看关于OOP的PHP手册部分:)还要注意,它可能看起来仍然不像是在洗牌,即使在放入构造函数之后也是如此,但它确实是。这只是因为数组中只有2个项,它们被重新排列成相同的原始顺序。感谢您提供的解决方案,一个解释将帮助我更好地理解为什么这样做。@在类中执行的Matthew代码必须驻留在一个方法中
\u construct
是创建对象时调用的方法的名称。要了解更多信息,我建议查看关于OOP的PHP手册部分:)为什么不能将代码放在该块中?谢谢你澄清这一点。因为类定义不应该运行代码,它的任务是定义它的组件。代码是在方法中运行的,如果您需要在创建对象时运行一些代码,请按照@laurencek的建议将其放入构造函数中。为什么不能将代码放入该块中?谢谢你澄清这一点。因为类定义不应该运行代码,它的任务是定义它的组件。代码在方法中运行,如果您需要在创建对象时运行一些代码,请按照@laurencek的建议将其放入构造函数中。