我为上述问题写下了以下内容
<?php
class sortClass{
public function __construct(array $arrayPassed){
return sort($arrayPassed);
}
}
$newarray=array(11,-2,4,35,0,8,-9);
$sorted = new sortClass($newarray);
print_r($sorted);
?>
并且输出是'sortClass Object((',我想帮忙理解为什么它不会打印出排序后的数组,当我们实例化一个类时——构造函数会自动执行并返回它返回的东西对吗? 那么为什么呢;t 打印 $sorted 对象打印 构造函数中返回什么?
你不需要包装器class
只是为了排序,你可以直接运行sort
函数,你的代码的问题是,在__constructor
中返回。
我建议你直接像这样运行它:
<?php
$newarray = array(11,-2,4,35,0,8,-9);
sort($newarray);
print_r($newarray);
?>
或者如果你仍然需要一个 OOP 版本:
<?php
class sortClass{
private $arrayPassed = [];
public function __construct(array $arrayPassed){
$this->arrayPassed = $arrayPassed;
}
public function sort() {
sort($this->arrayPassed);
return $this->arrayPassed;
}
}
$newarray = array(11,-2,4,35,0,8,-9);
$sortClass = new sortClass($newarray);
print_r($sortClass->sort());
https://www.php.net/manual/en/language.oop5.basic.php
你误解了OOP,你需要在编写代码之前了解它。 我只是为了这个想法给出了一个解决方法:
class sortClass
{
public $sorted;
public function __construct(array $arrayPassed)
{
sort($arrayPassed);
$this->sorted = $arrayPassed;
}
}
$newarray = array(11, -2, 4, 35, 0, 8, -9);
$sorted = new sortClass($newarray);
var_dump($sorted->sorted);
不能从构造函数方法返回任何内容。您必须创建一个新的公共方法,该方法返回排序后的值。
class MyClass
{
private $sorted;
public function __construct(array $input)
{
$this->sorted = asort($input);
}
public function sortedArray()
{
return $this->sorted;
}
}
$arr = [11, -2, 4, 35, 0, 8, -9];
$sorted = new MyClass($arr);
print_r($sorted->sortedArray());
正如 Nigel Ren解释的那样,你不能从构造函数方法返回。您需要一个新方法来返回已排序的值。检查我的代码
class sortClass{
private $sortedArray;
public function __construct(array $arrayPassed){
$this->sortedArray = asort($arrayPassed);
}
public function getSortedArray(){
return $this->sortedArray;
}
}
$newarray=array(11,-2,4,35,0,8,-9);
$sorted = new sortClass($newarray);
print_r($sorted->getSortedArray());