Search code examples
phparraysmultidimensional-arraydeclaration

Pushing rows into a 2d array: Can a loop be used inside of an array declaration?


I've been staring at this piece of code for nearly an hour and a half. In my inexperience I've no idea where I'm going wrong.

$gameInfo = array(
    for ($i = 0; $i < 10; $i++) {
        $friendsInfo[$i] = $facebook->api('/' . $randomfriends[$i]);
        array(
            $randomfriends[$i],
            $friendsInfo[$i][first_name],
            $friendsInfo[$i][last_name],
            $friendsInfo[$i][hometown][name],
            $friendsInfo[$i][location][name],
            $friendsInfo[$i][about]
        );
    }
);

This is my attempt. As you can see the values are being pulled in from facebook. This is not the problem as each value appears if I echo. I want to take the values and put them into a multidimensional array that follows this structure.

$gameInfo =  array(
    array('first_name','last_name','hometown','location','about'),
    array('first_name','last_name','hometown','location','about'),
    array('first_name','last_name','hometown','location','about'),
    array('first_name','last_name','hometown','location','about'),
    array('first_name','last_name','hometown','location','about')
);

Solution

  • Not quite sure what $facebook->api() gives you, but you probably want:

    $gameInfo = array();
    
    for($i=0; $i < 10; $i++){
        $gameInfo[] = $facebook->api('/' . $randomfriends[$i]);
    }
    

    or

    $gameInfo = array();
    
    for($i=0; $i < 10; $i++){
        $friend = $facebook->api('/' . $randomfriends[$i]);
        $gameInfo[] = array(
             $friend['first_name'],
             $friend['last_name'],
             $friend['hometown']['name'],
             $friend['location']['name'],
             $friend['about']
        );
    }
    

    Update: If api() returns a JSON string, then you have to use json_decode():

    $friend = json_decode($facebook->api('/' . $randomfriends[$i]), true);
    

    No offense, but your whole code is wrong syntax. You might want to read about arrays in PHP.