gpt4 book ai didi

php - 类与二维数组

转载 作者:可可西里 更新时间:2023-11-01 13:05:40 28 4
gpt4 key购买 nike

在 PHP 中使用哪个更好,二维数组还是类?我举了一个例子来说明我的意思。

// Using a class
class someClass
{
public $name;
public $height;
public $weight;

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

$classArray[1] = new someClass('Bob', 10, 20);
$classArray[2] = new someClass('Fred', 15, 10);
$classArray[3] = new someClass('Ned', 25, 30);


// Using a 2D array
$normalArray[1]['name'] = 'Bob';
$normalArray[1]['height'] = 10;
$normalArray[1]['weight'] = 20;

$normalArray[2]['name'] = 'Fred';
$normalArray[2]['height'] = 15;
$normalArray[2]['weight'] = 10;

$normalArray[3]['name'] = 'Ned';
$normalArray[3]['height'] = 25;
$normalArray[3]['weight'] = 30;

假设没有人出来表明类(class)太慢,看起来类(class)获胜。

我不知道我应该接受哪个答案,我只是对所有答案投了赞成票。


我现在已经写了两个几乎相同的页面,一个使用二维数组(在发布这个问题之前写的),另一个使用类,我必须说类产生更好的代码。我不知道会产生多少开销,但我怀疑它能否与代码本身的改进相媲美。

感谢您帮助我成为更好的程序员。

最佳答案

您在上面构建的“类”是大多数人在其他语言中使用struct 的目的。我不确定 PHP 中的性能影响是什么,但我怀疑在这里实例化对象的成本可能更高,即使只是一点点。

话虽这么说,但在我看来,如果成本相对较低,管理对象会更容易一些。

我只是根据标题和您的问题说以下内容,但是:请记住,类也提供了方法和访问控制的优势。因此,如果您想确保人们不会将权重更改为负数,您可以将 weight 字段设为私有(private)并提供一些访问器方法,例如 getWeight()设置重量()。在 setWeight() 中,您可以进行一些值检查,如下所示:

public function setWeight($weight)
{
if($weight >= 0)
{
$this->weight = $weight;
}
else
{
// Handle this scenario however you like
}
}

关于php - 类与二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24130/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com