您好我正在使用paypal API执行查询,我的问题涉及一个数组并检索键的值(这是动态的)我知道查询有效并且凭据很好,因为返回以下数组:
array(2) {
["L_TRANSACTIONID0"]=>
string(17) "9FX81733DJ079610B"
["L_TRANSACTIONID1"]=>
string(17) "5E083945JC6368706"
["L_TRANSACTIONID2"]=>
string(17) "7SP75180Y9281954W"
}
我想在foreach循环中打破每个键,但每个键都是动态的(注意每个键上的计数)。 如何在foreach循环中完成? 谢谢,
答案 0 :(得分:2)
前几天我刚回答了一个类似的问题,所以可能是重复的。无论如何,如果这对某人有帮助,请点击这里:
function process_response($str)
{
$data = array();
$x = explode("&", $str);
foreach($x as $val)
{
$y = explode("=", $val);
preg_match_all('/^([^\d]+)(\d+)/', $y[0], $match);
if (isset($match[1][0]))
{
$text = $match[1][0];
$num = $match[2][0];
$data[$num][$text] = urldecode($y[1]);
}
else
{
$text = $y[0];
// $data[$text] = urldecode($y[1]);
}
}
return $data;
}
只需将curl调用的结果输入到此中,然后将结果作为格式化数组。
注意注释掉的行,有一些是全局的字段,如版本,如果你想要这些,取消注释,但是你可能需要在下游调整一些格式代码。
作为如何使用它的示例,假设您想将其提供给PHPExcel对象,您可以这样做:
$response = your_curl_call($request);
$data = process_response($response);
$index = 1;
foreach($data as $row)
{
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A'.$index, $row['L_TIMESTAMP'])
->setCellValue('B'.$index, $row['L_TIMEZONE'])
->setCellValue('C'.$index, $row['L_TYPE'])
->setCellValue('D'.$index, $row['L_EMAIL'])
->setCellValue('E'.$index, $row['L_NAME'])
->setCellValue('F'.$index, $row['L_TRANSACTIONID'])
->setCellValue('G'.$index, $row['L_STATUS'])
->setCellValue('H'.$index, $row['L_AMT'])
->setCellValue('I'.$index, $row['L_CURRENCYCODE'])
->setCellValue('J'.$index, $row['L_FEEAMT'])
->setCellValue('K'.$index, $row['L_NETAMT']);
$index++;
}