| Conditions | 4 | 
| Paths | 6 | 
| Total Lines | 29 | 
| Code Lines | 14 | 
| Lines | 0 | 
| Ratio | 0 % | 
| Changes | 2 | ||
| Bugs | 0 | Features | 0 | 
| 1 | <?php  | 
            ||
| 12 | public static function toString(Translations $translations)  | 
            ||
| 13 |     { | 
            ||
| 14 | $array = PhpArray::toArray($translations);  | 
            ||
| 15 | |||
| 16 | //for a simple json translation dictionary, one domain is supported  | 
            ||
| 17 | $values = current($array);  | 
            ||
| 18 | |||
| 19 | // remove meta / header data  | 
            ||
| 20 |         if (array_key_exists('', $values)) { | 
            ||
| 21 | unset($values['']);  | 
            ||
| 22 | }  | 
            ||
| 23 | |||
| 24 |         $handle = fopen('php://memory', 'w'); | 
            ||
| 25 | |||
| 26 | //map to a simple csv dictionary (no plurals)  | 
            ||
| 27 |         foreach ($values as $original => $translated) { | 
            ||
| 
                                                                                                    
                        
                         | 
                |||
| 28 |             if (!isset($translated[1])) { | 
            ||
| 29 | $translated[1] = '';  | 
            ||
| 30 | }  | 
            ||
| 31 | fputcsv($handle, array($original, $translated[1]));  | 
            ||
| 32 | }  | 
            ||
| 33 | |||
| 34 | rewind($handle);  | 
            ||
| 35 | $csv = stream_get_contents($handle);  | 
            ||
| 36 | |||
| 37 | fclose($handle);  | 
            ||
| 38 | |||
| 39 | return $csv;  | 
            ||
| 40 | }  | 
            ||
| 41 | }  | 
            ||
| 42 | 
There are different options of fixing this problem.
If you want to be on the safe side, you can add an additional type-check:
If you are sure that the expression is traversable, you might want to add a doc comment cast to improve IDE auto-completion and static analysis:
Mark the issue as a false-positive: Just hover the remove button, in the top-right corner of this issue for more options.