我是.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;
}
我甚至关闭了吗?
答案 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允许使用数组的一些很酷的东西。