Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8632861
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 12, 20262026-06-12T09:24:34+00:00 2026-06-12T09:24:34+00:00

I have an array of size 5 MB, I am passing it to functions

  • 0

I have an array of size 5 MB, I am passing it to functions to functions (I am not passing it by reference)

foo( $arr );

function foo( $arr ) {
    ....
    bar( $arr );
    ....
}

function bar( $arr ) {
    ....
    test( $arr );
    ....
}

function test( $arr ) {
    ....
    test2( $arr );
    ....
}

PHP passes array values by value (copy of value) by default to functions.

my question is, if this array value is passed to 100 functions calls, will the PHP consumes 100 x 5 MB = 500 MB of memory ?

How the PHP handles big arrays ( in memory wise ) on function calls?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-12T09:24:35+00:00Added an answer on June 12, 2026 at 9:24 am

    Here is a code to test:

    <?php
    
        function testnochanges($arr1){
            foreach($arr1 as $val){
                //
            }
            return $arr1;
        }
    
        function testwithchanges($arr1){
            $arr1[] = 1;
            return $arr1;
        }
    
        echo "Stage 0: Mem usage is: " . memory_get_usage() . "<br />";
    
          for ($i = 0; $i < 100000; ++$i) {
            $arr[] = rand();
          }
    
         echo "Stage 1 (Array Created): Mem usage is: " . memory_get_usage() . "<br />";
    
    
         $arrtest1 = testnochanges($arr);
         echo "Stage 2 (Function did NO changes to array): Mem usage is: " . memory_get_usage() . "<br />";
    
         $arrtest2 = testwithchanges($arr);
         echo "Stage 3 (Function DID changes to array): Mem usage is: " . memory_get_usage() . "<br />";
    
    
        ?>
    

    and here is a output after i run it:

    Stage 0: Mem usage is: 330656
    Stage 1 (Array Created): Mem usage is: 8855296
    Stage 2 (Function did NO changes to array): Mem usage is: 8855352
    Stage 3 (Function DID changes to array): Mem usage is: 14179864
    

    On stage 0 we can see that before array is created PHP is already using some space in memory. After creating first array (Stage 1) we can see a big change in memory usage as expected. But after calling function testnochanges function and creating $arrtest1 on Stage 2, we see that memory usage did not change a lot. It’s because we did no changes to $arr, so $arrtest1 and $arr still are pointing to the same array. But on Stage 3, where we call testwithchanges function, and add an element to $arr PHP performs copy-on-write and returned array which is assigned to $arrtest2 now uses different part of memory and again we see a big grow of memory usage.

    Dry conclusion: If you copy array to another array and do not change it, memory usage stays the same as both arrays are pointed to the same one. If you change the array PHP performs copy-on-write and, of course memory usage grows.

    Good thing to read: Be wary of garbage collection, part 2.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have a function that takes an array of fixed size. The contents of
I have an array with a size that I dont know(mostly a size of
I have an array x in size of objects (between 1 and 100) and
I have a byte array of size 4 byte[] source = new byte[4]; Now
Say I have an array of arbitrary size holding single characters. I want to
A toy-case for my problem: I have a numpy array of size, say, 1000:
I have a problem initializing an array whose size is defined as extern const.
I have this array, for example (the size is variable): x = [1.111, 1.122,
I have on array like: $myarray = array(color, red, size, big, flavor, bitter); where
I have to create a function that can take in an array of pointers

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.