user
user

Reputation: 23

get a value from key value pair list in php

I want to display a specific value from key value list.. here is my code:

if (isset($_POST) && count($_POST)>0 )
{ 
    foreach($_POST as $paramName => $paramValue) {
            echo "<br/>" . $paramName . " = " . $paramValue;
    }
}

ouput

ORDERID = ORDS3700373
TXNAMOUNT = 200.00
CURRENCY = INR
TXNID = 32221284
BANKTXNID = 475815
STATUS = TXN_SUCCESS
RESPCODE = 01
RESPMSG = Txn Successful.
TXNDATE = 2017-01-10 18:13:25.0
GATEWAYNAME = WALLET
BANKNAME = 
PAYMENTMODE = PPI
CHECKSUMHASH = 

here I want to display only ORDERID and TXNID.. How do I get that value?

Upvotes: 1

Views: 1559

Answers (5)

nerdlyist
nerdlyist

Reputation: 2857

Moving comments to an answer.

You do not need to loop post it is just a global array. You can access the values at any of the keys like any associative array because that is what it is. Likewise these value can be used like any other

if(isset($_POST['ORDERID'])){
    $orderid = $_POST['ORDERID'];
}

if(isset($_POST['TXNID'])){
    $txnid = $_POST['TXNID'];    
}

// Should use htmlspecialchars() or htmlentities() here 
// but didn't want to confuse OP. It is for security.
echo "ORDERID is: " . $orderid . " and TXNID is: " . $txnid;

A note for security never trust user input and sanitize all $_POST variables before echoing or persisting. There are far better article out on the internet than I can summarize here.

Upvotes: 1

Ranjit Shinde
Ranjit Shinde

Reputation: 1130

You can easily access post values by it's field name instead of looping through all post elements. Simply access that elements directly as below:

if(isset($_POST['ORDERID'])) {
    echo 'ORDERID = '.$_POST['ORDERID'];
}
if(isset($_POST['TXNID'])) {
    echo 'TXNID= '.$_POST['TXNID'];
}

Upvotes: 2

Alex Shesterov
Alex Shesterov

Reputation: 27575

Don't overcomplicate a trivial task with a loop. Just drop the loop and echo the two values directly:

// Assuming the two values are expected to come in pair: 
if(isset($_POST['ORDERID']) && isset($_POST['TXNID'])) {
    echo "<br/>ORDERID = " . $_POST['ORDERID'];
    echo "<br/>TXNID = " . $_POST['TXNID'];
}

If you insist on having a loop, then you can go through the property names which you need

foreach(array('ORDERID', 'TXNID') as $paramName) {
    if(isset($_POST[$paramName])) {
        echo "<br/>" . $paramName . " = " . $_POST[$paramName];
    }
}

Upvotes: 0

Sunil Verma
Sunil Verma

Reputation: 2500

add an if like

if($paramName == "ORDERID" || $paramName == "TXNID") {

after foreach, remeber to close it after echo statement line

Upvotes: 0

sujivasagam
sujivasagam

Reputation: 1769

You can use if condition in the loop like this

if (isset($_POST) && count($_POST)>0 )
{ 
    foreach($_POST as $paramName => $paramValue) {
       if($paramName == 'ORDERID' || $paramName == 'TXNID')
            echo "<br/>" . $paramName . " = " . $paramValue;
    }
}

Upvotes: 0

Related Questions