Перебирая данные из базы данных - PullRequest
1 голос
/ 11 февраля 2012

Эй, у меня есть данные в моей переменной с использованием 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 ]

1 голос
/ 11 февраля 2012

Что по этому поводу:

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

Дайте мне знать, если это работает.

0 голосов
/ 12 февраля 2012

Я попробовал другой метод, если просто подумал о совместном использовании.

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

, дайте мне знать, если это хороший способ ..это работает

0 голосов
/ 11 февраля 2012

Вам не хватает второго индекса.Должно быть:

$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
}
0 голосов
/ 11 февраля 2012

Попробуйте это

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

Где $ x - переменная, которую вы можете использовать в цикле для получения значений.

...