简体   繁体   中英

Php: Array returning empty

I am stumped on my array is not being saved after having values added to it in the functions. I believe it is a problem with the variables not being in the scope of the function. I have the following variables:

$oldInterestIdArray = array();
$newInterestsIdArray = array();

and I have some functions to populate the arrays:

    function oldInterestIds($value, $key)
    {
        $data = fetchInterestDetail($value);
        $id = $data['id'];
        $oldInterestIdArray[] = $id;
    }


    function getNewInterestIds($value,$key)
    {
        if(interestExists($value))
        {
            $data = fetchInterestDetail($value);
            $id = $data['id'];
            $newInterestsIdArray[] = $id;
        }
        else
        {
            addInterest($value);
            $data = fetchInterestDetail($value);
            $id = $data['id'];
            $newInterestsIdArray[] = $id;
        }
    }

        if(count($errors) == 0)
        {
            $newInterests = array_diff($interestsArray, $interests);
            $common = array_intersect($interestsArray, $interests);
            $toChangeId = array_diff($interests, $common);
            array_walk($toChangeId, "oldInterestIds");
            array_walk($newInterests, "getNewInterestIds");
            echo json_encode($oldInterestIdArray);
        }

    }

But the $oldInterestIdArray is returning blank. But if I were to echo json inside the oldInterestIds function it works, which leaves me to believe this is a problem with the variables scope. I have tried changing the variable to:

global $oldInterestIdArray;
global $newInterestsIdArray;

But that is returning null. Any suggestions?

declare global $oldInterestIdArray; inside the function like

  function oldInterestIds($value, $key)
    {
        global $oldInterestIdArray; // set here global;
        $data = fetchInterestDetail($value);
        $id = $data['id'];
        $oldInterestIdArray[] = $id;
    }

See Example

Pass your array in as a reference :

function oldInterestIds(&$arr, $value, $key)
{
    $data  = fetchInterestDetail($value);
    $id    = $data['id'];
    $arr[] = $id;
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM