【问题标题】:A PHP array of objects [closed]PHP对象数组[关闭]
【发布时间】:2016-05-23 13:30:57
【问题描述】:

我想用对象填充一个数组..

我的班级:

class MyOrderClass {
public $id;
public $many;
public $cost;

public function __construct($id, $many, $cost) {

    $this->id = $id;
    $this->many = $many;
    $this->cost = $cost;

    }
}

我想要这样的东西:

$orders[0]->id = 1;
$orders[0]->many = 1;
$orders[0]->cost = 100;

你能帮我吗?

【问题讨论】:

  • 不清楚你在问什么...
  • 你能解释一下我怎样才能拥有上述类的数组吗?
  • 你的目标是什么?你会用对象数组做什么?向我们提供更多详细信息,以便我们为您提供指导。

标签: php arrays class


【解决方案1】:
$orders = [];
$orders[] = new MyOrderClass(1, 1, 100);
$orders[] = new MyOrderClass(1, 2, 150);

// alternatively
array_push($orders, new MyOrderClass(1, 3, 200));

// contents of the array
var_dump($orders);

您只需要将对象推入数组中

【讨论】:

    【解决方案2】:

    您是说您想从一个类中创建一个数组,但您的代码示例正在创建一个对象数组,因此,如果您想要您的示例,请查看其他答案,如果您想要您实际要求的内容,您可以将对象转换为数组:

    $order = new MyOrderClass(1, 1, 100);
    $order = (array) $order;
    var_dump($order);
    

    https://3v4l.org/LF2ps

    【讨论】:

    • 如何检查当前 id 是否存在?以上链接
    • 您正试图将您的对象变成某种疯狂的对象数组初始事物..您所做的事情是荒谬的,没有任何意义..您需要重新考虑一下'这里是战略..
    【解决方案3】:

    您需要将数组的第一个元素指定为您的类/对象的实例,然后更改属性:

    $orders = [];
    $orders[0] = new MyOrderClass();
    
    $orders[0]->id = 1;
    $orders[0]->many = 1;
    $orders[0]->cost = 100;
    

    【讨论】:

    • 我怎样才能访问所有成员是类:for($i=0;$i id == $id) { $found=true; $this[$i]->许多 += $许多;休息; } } if (!$found) { $this->id = $id; $this->many = $many; } }
    • 这不是您更改属性的方式。 (使用==
    • @Pamblam 谢谢它是糟糕的复制粘贴。更新了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-02
    • 1970-01-01
    • 2015-05-04
    • 1970-01-01
    • 1970-01-01
    • 2014-06-06
    相关资源
    最近更新 更多