如何在PHP中创建列表或对象数组?

时间:2009-06-08 02:50:40

标签: php

我是.net程序员vb& c#,但我似乎无法弄清楚如何将我的对象放入PHP中的列表或数组中。

var mylist = new List<myobject>();

mylist.add(myobject1);
mylist.add(myobject2);

我尝试了什么 产品是orderitems

集合的属性
$this->Products = getOrderItems();

public function getOrderItems()
{
    $items = array();
    $count = 0;

      // connect to db, query.....

    while($row = mysql_fetch_array($result, MYSQL_BOTH)){
        $count++;
        $items[$count] = ($row);
    }
    echo 'Count of Order Items...' . $count;

    return $items;
}

我甚至关闭了吗?

3 个答案:

答案 0 :(得分:14)

$items = array();

while($row = mysql_fetch_array($result, MYSQL_BOTH)) {
    $items[] = $row;
}
echo 'Count of Order Items...', count($items);

答案 1 :(得分:4)

  • $this->Products = getOrderItems();在PHP中是合法的,但它引用(全局)函数getOrderItems()而不是类方法。从类内部调用时,类方法和变量总是必须以$this->(或self::为前缀,如果它们是静态变量)。
    在您的示例代码中,您有错误。 getOrderItems被定义为类方法,但是你的调用不是$this-> - 作用域,因此php假定一个函数。它应抛出function not found - 错误。

  • []表示法将一个元素添加到数组的末尾。

  • 示例代码中第一个元素的索引是1(不是VB的标准情况?)。 php通常从0开始 - 虽然它可能(因为php-arrays不是真正的数组)从任意索引开始,我建议坚持零。

  • mysql_fetch_array是使用mysql的古老方式。现在你更善于使用mysqli或(甚至更好)PDO。

  •   

    (...)php中的列表或数组。

    列表,数组,堆栈,等等:在php中,everthing是一个有序的映射(误导性地称为数组):

      

    PHP: Arrays:PHP中的数组实际上是一个有序的映射。映射是将值与键关联的类型。此类型针对多种不同用途进行了优化;它可以被视为数组,列表(向量),哈希表(地图的实现),字典,集合,堆栈,队列,甚至更多。由于数组值可以是其他数组,因此树和多维数组也是可能的。

<强>更新

抱歉,我现在没有足够的时间来解释pdo / mysqli超过mysql的细微差别。

所以这里只是基础知识:

  • oop: pdo和mysqli是面向对象的(艰难的mysqli有功能别名)

  • 预备声明:最重要:pdo / mysqli准备好了报表。这意味着,您首先使用占位符准备一次查询,然后稍后填写值(无需再次准备查询)。这种方法有三个明显的优点:

    • 性能它的速度更快,因为数据库只需要一次(至少对于复杂的查询)来分析,编译和优化查询

    • 安全性:不需要引用字符串(自动发生!),使sql-injection攻击更难

    • 可维护性:查询的逻辑和数据部分是分开的,因此更容易阅读,您不必进行大量的字符串构思

  • 驱动程序驱动: pdo不是特定于数据库的。有几个受支持的数据库系统,可以更容易地将代码移植到其他数据库后端(但它不像ODBC这样的数据库抽象层,因此SQL仍然必须兼容)并且增加可重用性

当然,还有很多东西

答案 2 :(得分:2)

orlandu63发布的内容是正确的 - 使用$items[] = $row表示$ row作为$ items的下一个元素以数字形式附加。

另一个选择是,如果$ row中有一个id字段,你可以$items[$row->id] = $row;,这样做的好处是可以为你的数组建立索引并更容易找到给定的项目。

我真的建议阅读http://www.php.net/manual/en/language.types.array.php,这将向您解释PHP允许使用数组的一些很酷的东西。