【问题标题】:PHP Array always returning nullPHP数组总是返回null
【发布时间】:2014-11-03 16:57:41
【问题描述】:

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

$invalid_custom_transaction_ids = array();

方法一:

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

方法二:

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 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 文件的输出如下所示:

[2014 年 11 月 3 日 08:48:25 America/Los_Angeles]

然后打印如下错误

[2014 年 11 月 3 日 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-

【问题讨论】:

  • 也许$invalid_custom_transactions_ids 是空的,因此foreach() 会抛出该错误...尝试var_dump() 它和die() 看看你是否肯定有东西。 ..
  • 按原样查看您的代码真的会更好,而不是在我们不知道一个部分和另一个部分之间的关​​系的情况下分解成部分。

标签: php arrays for-loop foreach


【解决方案1】:

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

【讨论】:

  • error_log(array_values($invalid_custom_transaction_ids)); 也没有返回任何东西吗?无论哪种方式,这都不能解释为什么 foreach() 拒绝处理数组
  • @Christian.tucker 显然不是数组。
  • $invalid_custom_transaction_ids = array();array_push($invalid_custom_transaction_ids, $row['CustomTransID']);.. 所以 obviously 应该是一个。
  • @Christian.tucker 查看我的编辑。 $invalid_custom_transaction_ids 不是您收到错误的函数中的数组。
  • [03-Nov-2014 09:08:50 America/Los_Angeles] 是数组: -- is_array($invalid_custom_transaction_ids) 的结果返回空白。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-31
  • 1970-01-01
  • 1970-01-01
  • 2013-02-16
  • 2013-08-01
相关资源
最近更新 更多