我只是使用一维数组,没有什么特别的
$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))