0

アカウントのトランザクションの詳細を取得しようとしていPayPalますが、これは成功しましたが、これほど長くなり(配列であると想定)、データベースに詳細を挿入する必要がありMySQLます。私はいくつかのforeach方法を試しましたが、どうやら私は何か間違ったことをしています。

これは、PayPalリクエストが成功した後の応答です(として保存されます$httpParsedResponse

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 ) )
4

1 に答える 1

0

2つのアイデアは次のとおりです。

$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]...);
}
于 2012-08-26T00:17:38.533 に答える