Communities

Writing
Writing
Codidact Meta
Codidact Meta
The Great Outdoors
The Great Outdoors
Photography & Video
Photography & Video
Scientific Speculation
Scientific Speculation
Cooking
Cooking
Electrical Engineering
Electrical Engineering
Judaism
Judaism
Languages & Linguistics
Languages & Linguistics
Software Development
Software Development
Mathematics
Mathematics
Christianity
Christianity
Code Golf
Code Golf
Music
Music
Physics
Physics

Dashboard
Notifications
Mark all as read
Q&A

What are the pros and cons of using objects vs associative arrays for JSON results of a CURL request in PHP?

+3
−1

I have a PHP script that uses CURL to return a JSON result that looks

//Curl set up code
$result = curl_exec($ch);
//Error checking code
$json = json_decode($result, true);
//Code to process result.

Now with the json_decode function, I could set it to return process the JSON into a PHP object or to an associative array.

What would the pros and cons of using an objects vs associative arrays for the output of the json_decode function function?

Why does this post require moderator attention?
You might want to add some details to your flag.
Why should this post be closed?

0 comments

1 answer

+2
−0

It's just depend on PHP version. Above PHP 7 PHP object is faster and slightly heavier than array. On PHP 5 and below array is faster and lighter.

My test code:

<?php

$jsonobj = '{"Peter":35,"Ben":37,"Joe":43}';

$t0 = microtime(true);

$arraysOf=array();
$inicio=memory_get_usage();
for ($i=0; $i<100000; $i++) {
$arraysOf[] = json_decode($jsonobj,true);
}
$fin=memory_get_usage();
$timeArray = microtime(true) - $t0;
$memArray = $fin-$inicio;
echo '<p>arrays: '.$timeArray."</p>";
echo '<p>memory: '.$memArray."</p>";

$t0 = microtime(true);
$arraysOf=array();
$inicio=memory_get_usage();
for ($i=0; $i<100000; $i++) {
$arraysOf[] = json_decode($jsonobj);
}
$fin=memory_get_usage();
$timeObject = microtime(true) - $t0;
$memObject = $fin-$inicio;
echo '<p>Object: '.$timeObject."</p>";
echo '<p>memory: '.$memObject."</p>";

$timeDiff = abs(round((1 - $timeArray / $timeObject) * 100));
$memDiff = abs(round((1 - $memObject / $memArray) * 100));

$speed = $timeArray>$timeObject?"Slower":"Faster";
$speed2 = $memObject>$memArray?"Lighter":"Heavier";
echo '<p>associative arrays is '.$timeDiff.'% '.$speed.' and '.$memDiff.'% '.$speed2.' than object</p>';

?>

I tested on php 5.4, 7.4 and 8. You can test and check the result on:

Why does this post require moderator attention?
You might want to add some details to your flag.

4 comments

Ref. to "PHP 7 PHP object is faster and lighter than array", can you please provide a reference to at least one benchmark? It is nice to provide references, so that future readers are able to find more. Alexei‭ about 21 hours ago

@Alexei , check my updated answer. Thanks. yaskur‭ about 16 hours ago

Your answer begins with stating that "Above PHP 7 PHP object is faster and lighter than array". However, according to your test results, arrays are always lighter than object. elgonzo‭ about 16 hours ago

@elgonzo: updated, Sorry, I meant lighter than PHP 5, but still slightly heavier. yaskur‭ about 16 hours ago

Sign up to answer this question »