2013-08-05 27 views
1

这很有趣,没有让我感到难过。我有一个名为Workday的'order'对象数组,如果我print_r数组,我会得到以下内容;PHP Array没有正确迭代,只抓取第一个结果

Workday Object 
(
    [workday] => Array 
     (
      [0] => Order Object 
       (
        [id] => 3 
        [date] => 2013-08-02 
        [username] => userXYZ 
        [number] => 33333333 
        [duration_start] => 20:51:00 
        [duration_end] => 21:51:00 
        [total] => $340.00 
       ) 

      [1] => Order Object 
       (
        [id] => 3 
        [date] => 2013-08-03 
        [username] => userXXA 
        [number] => 87653212 
        [duration_start] => 10:51:00 
        [duration_end] => 11:54:00 
        [total] => $20.00 
       ) 

      [2] => Order Object 
       (
        [id] => 3 
        [date] => 2013-08-01 
        [username] => userXYD 
        [number] => 12345678 
        [duration_start] => 08:37:00 
        [duration_end] => 10:01:00 
        [total] => $10.00 
       ) 

     ) 

) 

这个问题似乎是当我尝试迭代数组时,它只输出第一个结果。我错过了什么?

$workday = new Workday(); 
$workday->Get($username, $duration_start, $duration_end); 

$i = 0; 
if($workday != null) 
{ 
    foreach($workday as $orders) 
    { 
     echo "ID: " . $orders[$i]->number; 
     $i++; 
    } 
} 
+0

刚试过,有致命错误:你确定这是不是你的'获得()'方法,返回结果只有一个不能使用类型为工作日的对象数组 – devfunkd

+0

?你是否将'$ username,$ duration_start,$ duration_end'作为搜索参数传递,因为这可能会增加你为什么只收到一个结果。 –

+1

@DaveChen你的回答是正确的,你为什么删除它? – anubhava

回答

2

试试这个

foreach($workday->workday as $orders) 
    { 
     echo "ID: " . $orders->number; 
    } 
+0

宾果!谢谢......我的阵列设计不好,或者只是一个n00b的开发监督。 :P – devfunkd

+1

@DaveChen你的答案奏效!不知道为什么你删除它? – devfunkd

0

你需要通过你的对象的workday成员变量来遍历

if($workday != null) 
{ 
    foreach($workday['workday'] as $orders) 
    { 
     echo "ID: " . $orders->number; 
    } 
} 
0

你要告诉这是怎么回事的错误:你试图使用一个对象作为数组。而不是迭代$workday->workday(这是您的对象内的数组)。

foreach ($workday->workday as $orders) { ... }