PayPal NVP TransactionSearch с массивом PHP
Здравствуйте! Я выполняю запрос с помощью API PayPal, и мой вопрос касается массива и получения значений для ключа (который является динамическим). Я знаю, что запрос работает и учетные данные хороши, так как возвращается следующий массив:
array(2) {
["L_TRANSACTIONID0"]=>
string(17) "9FX81733DJ079610B"
["L_TRANSACTIONID1"]=>
string(17) "5E083945JC6368706"
["L_TRANSACTIONID2"]=>
string(17) "7SP75180Y9281954W"
}
Я хочу разбить каждый ключ в цикле foreach, но каждый ключ является динамическим (обратите внимание на количество для каждого ключа). Как это можно сделать в цикле foreach? Спасибо,
1 ответ
Я только что ответил на аналогичный вопрос на днях, поэтому, возможно, дубликат. В любом случае, если это кому-то поможет, вот так:
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++;
}