1

I trying to get values of WSResult->Fare->BaseFare and Status->StatusCode using foreach loop Kindly help me....

But i have multiple WsResult like [0], [1] and goes on. This is my Response from my Api.

$h=array();
$h= (array)$cliente->__call('Search',$opta);

Below is output which i got from api

Array (
[SearchResult] => stdClass Object (
    [Status] => stdClass Object (
        [StatusCode] => 02
        [Description] => Successfull
        [Category] => SR
    )
    [Result] => stdClass Object (
        [WSResult] => Array (
            [0] => stdClass Object (
                [TripIndicator] => 1
                [Fare] => stdClass Object (
                    [BaseFare] => 2539
                    [Tax] => 460
                    [ServiceTax] => 0
                    [AdditionalTxnFee] => 152.34
                    [AgentCommission] => 38.08
                    [TdsOnCommission] => 7.62
                    [IncentiveEarned] => 0.00
                    [TdsOnIncentive] => 0.00
                    [PLBEarned] => 0.00
                    [TdsOnPLB] => 0.00
                    [PublishedPrice] => 3156.34
                    [AirTransFee] => 0
                    [Currency] => INR
                    [Discount] => 0
                    [ChargeBU] => stdClass Object (
                        [ChargeBreakUp] => Array (
                            [0] => stdClass Object (
                                [PriceId] => 0
                                [ChargeType] => TboMarkup
                                [Amount] => 5
                            )
                            [1] => stdClass Object (
                                [PriceId] => 0
                                [ChargeType] => OtherCharges
                                [Amount] => 0.00
                            )
                        )
                    )
                    [OtherCharges] => 5.00
                    [FuelSurcharge] => 0
                    [TransactionFee] => 0
                    [ReverseHandlingCharge] => 0
                    [OfferedFare] => 2965.92
                    [AgentServiceCharge] => 0
                    [AgentConvienceCharges] => 0
                )
            )
        )
    )
)
)

How do I get to the BaseFare under Fare and also StatusCode under Status

I tried something like this but didn't work:

foreach($h->SearchResult as $result){
     echo $result->Status->StatusCode;
     echo $result->Result->WSResult->Fare->BaseFare;
}

But Im getting error as "Trying to get property of non-object".

1 Answer 1

1

update
Looking at your updated question, there is a bigger issue with your code. You are calling the magic __call method manually! Don't. Just don't do that.
Replace:

$h= (array)$cliente->__call('Search',$opta);
//with
$h = $cliente->Search($opta);

And var_dump the value of $h right away.
I'm assuming that, because I've removed the cast from your code, you can then easily do something like this:

$baseFares = array();
foreach ($h->SearchResult->Result->WsResult as $k => $fare)
    $baseFares[$k] = $fare->Fare->BaseFare;
var_dump($baseFares);

That should give you an array of all baseFares returned by the API.

The value of $h is not an instance of stdClass. If you look closely at the dump, you can see that you're actually dealing with an array:

Array (//<-- array
    [SearchResult] => stdClass Object (//<-- this is an object

So to get the data you're after, you'll have to write:

$result = $h[0]->SearchResult->Result->WSResult;//this is an array, again
foreach ($result as $r)
    echo 'BaseFare: ', $r->Fare->BaseFare, PHP_EOL;
Sign up to request clarification or add additional context in comments.

1 Comment

@NavinBlackx: Basically $h is an array containing an object, so to get the status, you'll have to write $h[0]->SearchResult->Status->StatusCode, for the BaseFare value, see my answer. The error you are getting is because you are trying to access the properties on the array, not on the object that is in this array

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.