2017-06-05 5 views
1

Ich habe mehrere Array in Array-Wert erhalten, möchte ich besonderen Wert erhalten mit foreach unter meinem CodePHP-Array, wie für die Verwendung von foreach

Notice: Undefined index: TransID in der Linie 52

$test = array(
    'messages' => Array 
    (
     'resultCode' => 'Ok', 
     'message' => Array 
     (
      'code' => 'I00001', 
      'text' => 'Successful', 
     ), 

    ), 
    'transactionResponse' => Array 
    (
     'responseCode' => '1', 
     'authCode' => 'Z7K31J', 
     'avsResultCode' => 'Y', 
     'cvvResultCode' => 'P', 
     'cavvResultCode' => '2', 
     'transId' => '40004672975', 
     'refTransID' => Array 
     (
     ), 

     'transHash' => '163382584395AB06470CF365AD6F7381', 
     'testRequest' => '0', 
     'accountNumber' => 'XXXX4242', 
     'accountType' => 'Visa', 
     'messages' => Array 
     (
      'message' => Array 
       (
        'code' => '1', 
        'description' => 'This transaction has been approved', 
       ), 

     ), 
     'transHashSha2' => Array 
     (
     ), 
    ), 
); 

über meinem Array, führen $test in foreach

I Anzeigewert von transid wollen, response, transhash

foreach ($test as $key => $value) { 
    $response = $value['resultCode']; 
    $transId = $value['transId']; 
    $authCode = $value['authCode']; 
    $transHash = $value['transHash']; 
} 
+0

'$ value to take [ 'transactionResponse'] [ 'transId']' – hassan

+0

@Janak vyas wollen es nur zweite Array 'transactionResponse' bilden ? –

+1

Sie können foreach nicht für das verwenden, was Sie wollen. Sie haben weder transId, authCode oder transHash im Nachrichten-Array noch resultCode im transactionResponse-Array. –

Antwort

0

Verwendung array_walk_recursive(), wo Sie Ihre Werte nicht wie unten in jeder Ebene des Arrays gehen müssen echo:

<?php 
    array_walk_recursive($test, function ($item, $key){ 
    if($key == 'transId' || $key == 'transHash' || $key == 'resultCode'){ 
     echo $key." => ".$item."<br>"; 
    } 
}); 
0

Sie nicht foreach brauchen:

$response = $test['messages']['resultCode']; 
$transId = $test['transactionResponse']['transId']; 
$authCode = $test['transactionResponse']['authCode']; 
$transHash = $test['transactionResponse']['transHash']; 
0

können Sie diese

foreach ($test as $key => $value) 
{ 
    if(!empty($value['message'])) 
    { 
     $response = $value['messages']['resultCode']; 
    } 
    elseif(!empty($value['transactionResponse'])) 
    { 
     $transId = $value['transactionResponse']['transId']; 
     $authCode = $value['transactionResponse']['authCode']; 
     $transHash = $value['transactionResponse']['transHash']; 
    } 
} 
verwenden

wenn Sie die richtige wollen, dann müssen Sie es Array und Schlüssel als transid

Verwandte Themen