循环来自数据库的数据

时间:2012-02-11 07:54:38

标签: cakephp cakephp-1.3

嘿,我使用foreach($ report as& rep)

获取了变量中的数据

注意它是从数据库中的4个不同的表中获取的东西

现在当我打印我的$ rep时,我得到以下内容:

Array
(
    [Report] => Array
        (
            [id] => 246
            [emp] => werock
            [name] => werock
            [organization] => cakephp
            [customer] => great
        )

    [file] => Array
        (
            [0] => Array
                (
                    [id] => 211
                    [report_id] => 246
                    [file_name] => 
                    [file_type] => 
                    [file_size] => 0
                    [file_error] => 4
                    [file_tag] => 0
                )

        )

    [Engineer] => Array
        (
            [0] => Array
                (
                    [id] => 232
                    [report_id] => 246
                )

        )

    [Issue] => Array
        (
            [0] => Array
                (
                    [id] => 118
                    [report_id] => 246
                    [date_created] => 2012-02-10
                    [status] => wait
                )

            [1] => Array
                (
                    [id] => 119
                    [report_id] => 246
                    [date_created] => 2012-02-10
                    [status] => debug
                )

            [2] => Array
                (
                    [id] => 120
                    [report_id] => 246
                    [date_created] => 2012-02-10
                    [status] => Completed

                )

        )

)

现在我要做的是访问Issues数组并检查其中有多少个数组。在这种情况下3(0,1,2)。并在这种情况下打印最后一个索引的状态值(2)。

但当我执行$ rep ['Issue'] ['status']时,我得到Undefined index:status。你能告诉我哪里可能出错了。

4 个答案:

答案 0 :(得分:1)

这个怎么样:

echo $rep['Issue'][count($rep['Issue'])-1]['status'];

让我知道它是否有效。

答案 1 :(得分:0)

试试这个

$rep['Issue'][$x]['status'] 

$ x是变量的,你可以在循环中使用来获取值。

答案 2 :(得分:0)

您缺少第二个索引。它应该是:

$rep['Issue'][count($rep['Issue'])-1]['status']

您也可以尝试使用Set::extract。 Set类对于使用数组非常有用。

$status = Set::extract('/Issue/.[:last]/status', $rep);
if(count($status)){
 // $status[0] == the value of status which is 'Complete' in your example
} else {
 // no issues
}

答案 3 :(得分:-1)

如果想分享,我尝试了另一种方法。

$ endEl [$ rep ['Report'] ['id']] = end($ rep ['Issue']);

让我知道这是否是一个好方法..它的工作原理