我正在尝试获取PayPal
帐户的交易详细信息,我成功地做到了这一点,但我得到了这么长(我假设是一个数组),我需要将详细信息插入MySQL
数据库。我尝试了几种foreach
方法,但显然我做错了。
这是成功请求(存储为$httpParsedResponse
)后来自PayPal
的响应
TransactionSearch Completed Successfully: Array (
[L_TIMESTAMP0] => 2012%2d08%2d14T18%3a46%3a00Z
[L_TIMESTAMP1] => 2012%2d08%2d14T18%3a45%3a32Z
[L_TIMESTAMP2] => 2012%2d08%2d13T01%3a45%3a48Z
[L_TIMESTAMP3] => 2012%2d08%2d13T01%3a34%3a12Z
[L_TIMEZONE0] => GMT
[L_TIMEZONE1] => GMT
[L_TIMEZONE2] => GMT
[L_TIMEZONE3] => GMT
[L_TYPE0] => Payment
[L_TYPE1] => Payment
[L_TYPE2] => Payment
[L_TYPE3] => Transfer
[L_EMAIL0] => pmd_1333866_per%40yahoo%2ecom
[L_EMAIL1] => pmd_1333866_per%40yahoo%2ecom
[L_EMAIL2] => pmd_1333866_per%40yahoo%2ecom
[L_NAME0] => Joshua%20O
[L_NAME1] => Joshua%20O
[L_NAME2] => Joshua%20O
[L_NAME3] => PayPal
[L_TRANSACTIONID0] => 58289472YK615973G
[L_TRANSACTIONID1] => 4U113116FL1819900
[L_TRANSACTIONID2] => 2X978155KR373471P
[L_TRANSACTIONID3] => 3TH38971MF599302V
[L_STATUS0] => Completed
[L_STATUS1] => Completed
[L_STATUS2] => Completed
[L_STATUS3] => Completed
[L_AMT0] => %2d100%2e00
[L_AMT1] => %2d50%2e00
[L_AMT2] => %2d200%2e00
[L_AMT3] => 2000%2e00
[L_CURRENCYCODE0] => USD
[L_CURRENCYCODE1] => USD
[L_CURRENCYCODE2] => USD
[L_CURRENCYCODE3] => USD
[L_FEEAMT0] => 0%2e00
[L_FEEAMT1] => 0%2e00
[L_FEEAMT2] => 0%2e00
[L_FEEAMT3] => 0%2e00
[L_NETAMT0] => %2d100%2e00
[L_NETAMT1] => %2d50%2e00
[L_NETAMT2] => %2d200%2e00
[L_NETAMT3] => 2000%2e00
[TIMESTAMP] => 2012%2d08%2d25T17%3a59%3a01Z
[CORRELATIONID] => bf5b1a824d937
[ACK] => Success
[VERSION] => 51%2e0
[BUILD] => 3435050
)
很明显,我猜阵列的结构是
[L_TIMESTAMP0]
[L_TIMESTAMP1]
[L_TIMESTAMP2]
对于每组有多少组交易详细信息,即时间戳、时区、类型、电子邮件等,这一点仍在继续。。。
在这种情况下,有3组事务详细信息,但无论什么解决方案,只要只有1个事务或100个事务,都需要能够循环通过它。
就像我说的,这里唯一的目标是从PayPal中获取这个返回的数组,并插入到MySQL数据库中。
我希望这是有道理的,任何帮助都将不胜感激!谢谢
很抱歉,我不得不编辑我的旧问题,因为我想我是个新手——无论如何,我认为你的代码有助于更好地组织它,这是我现在得到的回答。。。仍然对如何将其插入mysql数据库感到困惑。。。
Array ( [0] => Array ( [timestamp] => 2012%2d08%2d14T18%3a46%3a00Z
[timezone] => GMT
[type] => Payment
[email] => pmd_1333866_per%40yahoo%2ecom
[name] => Joshua%20O
[transactionid] => 58289472YK615973G
[status] => Completed
[amt] => %2d100%2e00
[feeamt] => 0%2e00
[netamt] => %2d100%2e00 )
[1] => Array ( [timestamp] => 2012%2d08%2d14T18%3a45%3a32Z
[timezone] => GMT
[type] => Payment
[email] => pmd_1333866_per%40yahoo%2ecom
[name] => Joshua%20O
[transactionid] => 4U113116FL1819900
[status] => Completed
[amt] => %2d50%2e00
[feeamt] => 0%2e00
[netamt] => %2d50%2e00 )
[2] => Array ( [timestamp] => 2012%2d08%2d13T01%3a45%3a48Z
[timezone] => GMT
[type] => Payment
[email] => pmd_1333866_per%40yahoo%2ecom
[name] => Joshua%20O
[transactionid] => 2X978155KR373471P
[status] => Completed
[amt] => %2d200%2e00
[feeamt] => 0%2e00
[netamt] => %2d200%2e00 )
[3] => Array ( [timestamp] => 2012%2d08%2d13T01%3a34%3a12Z
[timezone] => GMT
[type] => Transfer
[email] =>
[name] => PayPal
[transactionid] => 3TH38971MF599302V
[status] => Completed
[amt] => 2000%2e00
[feeamt] => 0%2e00
[netamt] => 2000%2e00 ) )
两个想法是:
$numOfTransactions=intval((count($response)-5)/11);
其中5是每个事务未重复的值的数目,11是每个事务的值的数量。这取决于结构是否可靠。
或
$numOfTransactions=0;
foreach ($response as $key=>$value){
$check=strpos($key,'L_TIMESTAMP');
if ($check===false) break;
$numOfTransactions++;
}
然后你可以循环通过响应来构建你的数据
for ($i=0;$i<$numOfTransactions;$i++){
$data[$i]=array("timestamp"=>$response['L_TIMESTAMP'.$i],"timezone"=>$response['L_TIMEZONE'.$i]...);
}