How to loop through fields from the Field Collection?
I'm current "fighting" width this module, too. I don't know if it is the correct/easiest way, but it works (for me).

First you have to load the ids of the field collection fields of the node:

$fc_fields = field_get_items('node', $node, 'field_image_teaser');

// Extract the field collection item ids
$ids = array();
foreach ($fc_fields as $fc_field) {
    $ids[] = $fc_field['value'];
}


I found the code above at Accessing a field collection (a related question).

To iterate over all fields you can use the following code:

//Get the entities
$collections = field_collection_item_load_multiple($ids);

//Loop over the array - if you have more than one entity
for ($i = 1; $i &lt;= sizeof($collections); $i++) {
    $collection = $collections [$i];

    //Iterate over all member vars of the FieldCollectionItemEntity object
    foreach($collection as $key =&gt; $value) {
        //Look for fields - there are some other class vars, too.
        if (strpos ($key, 'field') !== false) {
            //Search for textfields 
            if (isset($value['und']) &amp;&amp; is_array($value ['und']) &amp;&amp; isset($value['und'][0]['value'])) {
                print "Field ".$key." ".$value['und'][0]['value'];
            }
        }
    }                   
}