As a follow up to my question here, I am trying to implement the following PHP function in Objective-C, which will generate a cartesian product:
function array_cartesian_product($arrays)
{
    $result = array();
    $arrays = array_values($arrays);
    $sizeIn = sizeof($arrays);
    $size = $sizeIn > 0 ? 1 : 0;
    foreach ($arrays as $array)
        $size = $size * sizeof($array);
    for ($i = 0; $i < $size; $i ++)
    {
        $result[$i] = array();
        for ($j = 0; $j < $sizeIn; $j ++)
            array_push($result[$i], current($arrays[$j]));
        for ($j = ($sizeIn -1); $j >= 0; $j --)
        {
            if (next($arrays[$j]))
                break;
            elseif (isset ($arrays[$j]))
                reset($arrays[$j]);
        }
    }
    return $result;
}
Here is what I have so far:
-(NSArray *) array_cartesian_product:(NSArray *)arrays {
    NSMutableArray *result = [[NSMutableArray alloc] init];
    int sizeIn = [arrays count];
    int size = (sizeIn > 0) ? 1 : 0;
    for(id array in arrays)
        size *= [array count];
    for(int i = 0; i < size; i++) {
        for (int j = 0; j < sizeIn; j++) {
            [result insertObject:[arrays objectAtIndex:j] atIndex:i];
        }
        for (int j = (sizeIn - 1); j >= 0; j--) {
            // ?????
        }
    }
    return result;
}
I'm getting lost when trying to code the equivalent of PHP's next, current and reset functions, as I dont know how to reference the internal pointer to the array.
How can I implement the last block of code and get an equivalent function?
 
     
     
    