2012-08-22 53 views
0

你好我正在執行與貝寶API查詢和我的問題涉及到一個數組和檢索值(這是動態的)我知道查詢工作和憑據是好的,如下面的數組返回:Paypal與PHP數組的NVP TransactionSearch

array(2) { 
["L_TRANSACTIONID0"]=> 
string(17) "9FX81733DJ079610B" 
["L_TRANSACTIONID1"]=> 
string(17) "5E083945JC6368706" 
["L_TRANSACTIONID2"]=> 
string(17) "7SP75180Y9281954W" 
} 

我想打破每個鍵出foreach循環,但每個鍵是動態的(注意,在每個按鍵上的計數)。 這怎麼能在foreach循環中完成? 謝謝,

+2

'的foreach($數組作爲$鍵=> $值)' ? – NullUserException

回答

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; 
} 

只需從捲曲通話將檢測結果送入到這一點,並把結果作爲一個格式化的陣列。

注意註釋掉的行,有一些字段是全局的,比如版本,如果你想要這些,取消註釋,但是你可能不得不調整一些格式化代碼。

至於如何使用這樣的一個例子,說你要這個送入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++; 
    } 
相關問題