PHP数组总是返回null


PHP Array always returning null

我只是使用一维数组,没有什么特别的

$invalid_custom_transaction_ids = array();

方法1:

foreach($result as $row) {
    if($row['TransactionID'] == $paypal_transaction_id) {
        error_log("[DIE]1");
        die();
    }
    error_log("[PUSHING]".$row['CustomTransID']);
    array_push($invalid_custom_transaction_ids, $row['CustomTransID']);
}

方法2:

foreach($result as $row) {
    if($row['TransactionID'] == $paypal_transaction_id) {
        error_log("[DIE]1");
        die();
    }
    error_log("[PUSHING]".$row['CustomTransID']);
    $invalid_custom_transaction_ids[] = $row['CustomTransID'];
}

以下内容被打印到调试日志中,显示了我尝试添加到array()中的值

【2014年11月3日08:48:25美国/洛杉矶】【推送】Ux837Yn3rK3

当我尝试使用以下代码将数组打印到debug_log时

    error_log(var_dump($invalid_custom_transaction_ids));

它返回空白,我也试过这个

    error_log(array_values($invalid_custom_transaction_ids));

error_log文件的输出如下所示:

【2014年11月3日08:48:25美国/洛杉矶】

然后打印以下错误

〔03-Nov-2014 08:48:25 America/Loss_Angeles〕PHP警告:在第195行的/path/to/script.PHP中为foreach()提供的参数无效

第195行的代码如下:

function uniqueTransactionCheck() {
    error_log("[UTC]1");
    error_log(var_dump($invalid_custom_transaction_ids));
    error_log("Is array: " . is_array($invalid_custom_transaction_ids));
    foreach($invalid_custom_transaction_ids as $invalid) {
        if($custom_transaction_id == $invalid) {
            $custom_transaction_id = generateTransactionID();
            uniqueTransactionCheck();
        }
    }
}

怎么回事?我一点都不明白,我一直在努力,试图把这件事做好,并在不同的纪录片和方法中摸索。我大吃一惊。


-snip-

您的错误是var_dump不返回字符串。它打印成标准输出。当您写入error_log(var_dump(...))时,它不会将var_dump输出写入错误日志。

在我看来,变量的类型并不是您所期望的数组。你能打印出is_array($invalid_custom_transaction_ids)的结果吗?

编辑:

好的,你的问题是,在uniqueTransactionCheck()中,你引用了一个名为$invalid_custom_transaction_ids的变量。

但是,uniqueTransactionCheck()的作用域中不存在该变量。您可能希望将变量作为参数传递。如果您在uniqueTransactionCheck()中运行以下代码,您将在日志中看到错误打印:

error_log(isset($invalid_custom_transaction_ids))