PHP数组始终返回null

时间:2014-11-03 16:57:41

标签: php arrays for-loop foreach

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

$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'];
}

以下内容将打印到调试日志中,显示我尝试添加到数组中的值()

  

[03-Nov-2014 08:48:25 America / Los_Angeles] [PUSHING] Ux837Yn3rK3

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

    error_log(var_dump($invalid_custom_transaction_ids));

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

    error_log(array_values($invalid_custom_transaction_ids));

输出到error_log文件如下所示:

  

[03-Nov-2014 08:48:25 America / Los_Angeles]

然后打印以下错误

  

[03-Nov-2014 08:48:25 America / Los_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 -

1 个答案:

答案 0 :(得分:2)

你的错误是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))