При попытке передать функцию массива с одной страницы php на другую. страница try.php имеет фактическую функцию

function someFunc() {

include_once("includes/dbconnect.php");
$types = array();
$connect = TRUE;
$dbconn = dbconnect($connect);

if ($dbconn) {
    $sql = "select usertype, userdeptnum from bd.bdusers";

    $stmt = db2_prepare($dbconn, $sql);
    if ($stmt) {
        $result = db2_execute($stmt);
        if (!$result) {
            echo "exec errormsg: " . db2_stmt_errormsg($stmt);
        }

        while ($row = db2_fetch_assoc($stmt)) {
            $types[] = $row;

        }
    } else {
        echo "exec errormsg: " . db2_stmt_errormsg($stmt);
    }
    db2_close($dbconn);
} else {
    echo "faild " . db2_conn_errormsg();
}

return array($types);
}

Если я использую

 echo "<pre>";
 print_r($types);
 echo "</pre>";

Я понимаю это

Array
(
[0] => Array
    (
        [USERTYPE] => 1
        [USERDEPTNUM] => 3
    )

[1] => Array
    (
        [USERTYPE] => 1
        [USERDEPTNUM] => 5
    )

[2] => Array
    (
        [USERTYPE] => 2
        [USERDEPTNUM] => 28
    )

[3] => Array
    (
        [USERTYPE] => 1
        [USERDEPTNUM] => 28
    )

[4] => Array
    (
        [USERTYPE] => 2
        [USERDEPTNUM] => 3
    )

[5] => Array
    (
        [USERTYPE] => 1
        [USERDEPTNUM] => 1
    )

[6] => Array
    (
        [USERTYPE] => 1
        [USERDEPTNUM] => 1
    )

[7] => Array
    (
        [USERTYPE] => 2
        [USERDEPTNUM] => 3
    )

[8] => Array
    (
        [USERTYPE] => 1
        [USERDEPTNUM] => 31
    )

[9] => Array
    (
        [USERTYPE] => 2
        [USERDEPTNUM] => 2
    )

[10] => Array
    (
        [USERTYPE] => 2
        [USERDEPTNUM] => 1
    )

[11] => Array
    (
        [USERTYPE] => 2
        [USERDEPTNUM] => 56
    )

[12] => Array
    (
        [USERTYPE] => 2
        [USERDEPTNUM] => 89
    )

[13] => Array
    (
        [USERTYPE] => 2
        [USERDEPTNUM] => 56
    )

[14] => Array
    (
        [USERTYPE] => 2
        [USERDEPTNUM] => 45
    )

[15] => Array
    (
        [USERTYPE] => 2
        [USERDEPTNUM] => 90
    )

)

Но когда я передаю эту функцию на try2.php и так же предварительно, print_r, чтобы увидеть, что я получаю, я получаю это

Array
(
[0] => Array
    (
        [0] => Array
            (
                [USERTYPE] => 1
                [USERDEPTNUM] => 3
            )

        [1] => Array
            (
                [USERTYPE] => 1
                [USERDEPTNUM] => 5
            )

        [2] => Array
            (
                [USERTYPE] => 2
                [USERDEPTNUM] => 28
            )

        [3] => Array
            (
                [USERTYPE] => 1
                [USERDEPTNUM] => 28
            )

        [4] => Array
            (
                [USERTYPE] => 2
                [USERDEPTNUM] => 3
            )

        [5] => Array
            (
                [USERTYPE] => 1
                [USERDEPTNUM] => 1
            )

        [6] => Array
            (
                [USERTYPE] => 1
                [USERDEPTNUM] => 1
            )

        [7] => Array
            (
                [USERTYPE] => 2
                [USERDEPTNUM] => 3
            )

        [8] => Array
            (
                [USERTYPE] => 1
                [USERDEPTNUM] => 31
            )

        [9] => Array
            (
                [USERTYPE] => 2
                [USERDEPTNUM] => 2
            )

        [10] => Array
            (
                [USERTYPE] => 2
                [USERDEPTNUM] => 1
            )

        [11] => Array
            (
                [USERTYPE] => 2
                [USERDEPTNUM] => 56
            )

        [12] => Array
            (
                [USERTYPE] => 2
                [USERDEPTNUM] => 89
            )

        [13] => Array
            (
                [USERTYPE] => 2
                [USERDEPTNUM] => 56
            )

        [14] => Array
            (
                [USERTYPE] => 2
                [USERDEPTNUM] => 45
            )

        [15] => Array
            (
                [USERTYPE] => 2
                [USERDEPTNUM] => 90
            )

    )

)

Это массив внутри массива. Я пытался вывести массив с помощью foreach и цикла for, но я всегда получаю неопределенный индекс или преобразование массива в строку, и он просто выводит «Массив». Что я делаю неправильно?

0
moe 2 Дек 2014 в 19:39

2 ответа

Потому что вы вернули array($types);. Вернуть $types вместо array($types).

function someFunc() {
    include_once("includes/dbconnect.php");
    $types = array();
    $connect = TRUE;
    $dbconn = dbconnect($connect);
    if ($dbconn) {
        $sql = "select usertype, userdeptnum from bd.bdusers";
        $stmt = db2_prepare($dbconn, $sql);
        if ($stmt) {
            $result = db2_execute($stmt);
            if (!$result) {
                echo "exec errormsg: " . db2_stmt_errormsg($stmt);
            }
            while ($row = db2_fetch_assoc($stmt)) {
                $types[] = $row;

            }
        } else {
        echo "exec errormsg: " . db2_stmt_errormsg($stmt);
    }
    db2_close($dbconn);
    } else {
        echo "faild " . db2_conn_errormsg();
    }
    return $types; //<==
}

ИЗМЕНИТЬ: В try.php попробуйте этот код, чтобы показать результат в таблице

echo '<table border="1">';
echo '<tr><th>USERTYPE</th><th>USERDEPTNUM</th></tr>';
foreach($types as $val){
    echo '<tr><td>'.$val['USERTYPE'].'</td><td>'.$val['USERDEPTNUM'].'</td></tr>';
}
echo '</table>';
3
alamincse07 2 Дек 2014 в 19:59
Я изменил эту строку и обновил try2.php, и с помощью pre я получаю правильно выглядящий массив, но foreach дает мне эту ошибку «Примечание: преобразование массива в строку в /www/websvr6/try2.php в строке 17 Массив». Что я? m пытается заполнить таблицу этим массивом. Есть лучший способ сделать это?
 – 
moe
2 Дек 2014 в 19:47
<?php
include_once("try.php");


$types = someFunc();

echo "<pre>";
print_r(someFunc());
echo "</pre>";

foreach ($types as $list){
echo $types;

}
?>
0
moe 2 Дек 2014 в 19:59