PHP 类,在 sort() 函数的帮助下对有序整数数组进行排序



我为上述问题写下了以下内容

<?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());

相关内容

  • 没有找到相关文章

最新更新