php - Array not filling out like I'm expecting it to -


i have function that's supposed take in array of arrays, , split array of arrays of 100 items each. problem when execute it, in case, passing 1137 items, return array, has 12 arrays, empty except last one.

here's code:

$names_to_fetch_from_twitter = array (     array('screen_name' => 'acme', 'profiles_rownum' => 1, 'screen_name_rownum' => 1),     array('screen_name' => 'acme1', 'profiles_rownum' => 2, 'screen_name_rownum' => 2),     array('screen_name' => 'acme2', 'profiles_rownum' => 3, 'screen_name_rownum' => 3),     array('screen_name' => 'acme3', 'profiles_rownum' => 4, 'screen_name_rownum' => 4),     array('screen_name' => 'acme4', 'profiles_rownum' => 5, 'screen_name_rownum' => 5)         );  $names_to_fetch_from_twitter_organized = split_into_blokcs_of_3 ($names_to_fetch_from_twitter);  echo '<pre>'; print_r($names_to_fetch_from_twitter_organized); echo '</pre>';  function split_into_blokcs_of_3 ($names_to_fetch_from_twitter) {     $names_to_fetch_from_twitter_organized = array();     $count = 1;     $screen_names = array();     $profiles_row_nums = array();     $screen_name_rownums = array();     foreach ($names_to_fetch_from_twitter $name_to_fetch_from_twitter) {         $screen_names[] = $name_to_fetch_from_twitter['screen_name'];         $profiles_row_nums[] = $name_to_fetch_from_twitter['profiles_rownum'];         $screen_name_rownums[] = $name_to_fetch_from_twitter['screen_name_rownum'];         $count++;         if ($count > 3) {             $count = 1;             $screen_names = array();             $profiles_row_nums = array();             $screen_name_rownums = array();                         $names_to_fetch_from_twitter_organized[] =                      package_into_array($screen_names,$profiles_row_nums,$screen_name_rownums,$names_to_fetch_from_twitter_organized);         }     }     if ($count > 1) {         $names_to_fetch_from_twitter_organized[] =                  package_into_array($screen_names,$profiles_row_nums,$screen_name_rownums,$names_to_fetch_from_twitter_organized);     }     return $names_to_fetch_from_twitter_organized; }  function package_into_array($screen_names,$profiles_row_nums,$screen_name_rownums,$names_to_fetch_from_twitter_organized)  {     $names_to_fetch_from_twitter_organized[] = array (         'screen_names' => implode (',',$screen_names),         'profiles_row_nums' => $profiles_row_nums,         'screen_name_rownums' => $screen_name_rownums     );         return $names_to_fetch_from_twitter_organized; } 

here's output:

array (     [0] => array         (             [0] => array                 (                     [screen_names] =>                      [profiles_row_nums] => array                         (                         )                     [screen_name_rownums] => array                         (                         )                 )         )     [1] => array         (             [0] => array                 (                     [0] => array                         (                             [screen_names] =>                              [profiles_row_nums] => array                                 (                                 )                             [screen_name_rownums] => array                                 (                                 )                         )                 )             [1] => array                 (                     [screen_names] => acme3,acme4                     [profiles_row_nums] => array                         (                             [0] => 4                             [1] => 5                         )                     [screen_name_rownums] => array                         (                             [0] => 4                             [1] => 5                         )                 )         ) ) 

when i'm expecting following:

array (     [0] => array         (             [screen_names] => acme1,acme2,acme3             [profiles_row_nums] => array                 (                     [0] => 1                     [1] => 2                     [2] => 3                 )                 [screen_name_rownums] => array                 (                     [0] => 1                     [1] => 2                     [2] => 3                    )         )         [1] => array         (             [screen_names] => acme4,acme5             [profiles_row_nums] => array                 (                     [0] => 1                     [1] => 2                 )                 [screen_name_rownums] => array                 (                     [0] => 1                     [1] => 2                 )          )       )                                       

any ideas?

solution:

i had couple of errors:

  1. i resetting arrays before included them in master array
  2. i incrementing array both in main function , helper function.

here's correct code:

function split_into_blokcs_of_3 ($names_to_fetch_from_twitter) {     $names_to_fetch_from_twitter_organized = array();     $count = 1;     $screen_names = array();     $profiles_row_nums = array();     $screen_name_rownums = array();     foreach ($names_to_fetch_from_twitter $name_to_fetch_from_twitter) {         $screen_names[] = $name_to_fetch_from_twitter['screen_name'];         $profiles_row_nums[] = $name_to_fetch_from_twitter['profiles_rownum'];         $screen_name_rownums[] = $name_to_fetch_from_twitter['screen_name_rownum'];         $count++;         if ($count > 3) {                $names_to_fetch_from_twitter_organized =                      package_into_array($screen_names,$profiles_row_nums,$screen_name_rownums,$names_to_fetch_from_twitter_organized);             $count = 1;             $screen_names = array();             $profiles_row_nums = array();             $screen_name_rownums = array();                              }     }     if ($count > 1) {         $names_to_fetch_from_twitter_organized =                  package_into_array($screen_names,$profiles_row_nums,$screen_name_rownums,$names_to_fetch_from_twitter_organized);     }     return $names_to_fetch_from_twitter_organized; }                   

i think might assuming new array created inside of if($count > 3) block.

you might try adding new array() there instead of array should overwrite there previously.


Comments

Popular posts from this blog

c# - Send Image in Json : 400 Bad request -

javascript - addthis share facebook and google+ url -

ios - Show keyboard with UITextField in the input accessory view -