each(function (Crawler $node) use (&$pickups) { $pickupId = (int) $node->attr('idzustieg'); $pickupDate = $node->attr('datum'); $pickupTime = $node->attr('zeit'); $price = $node->attr('preis') ? $this->stringToFloat($node->attr('preis')) : null; $pickup = new Pickup(); $pickup->id = $pickupId; $pickup->code = $node->attr('code'); $pickup->city = $this->getStringOrNullValue($node->filterXPath('//ort')); $pickup->postalCode = $this->getStringOrNullValue($node->filterXPath('//plz')); $pickup->street = $this->getStringOrNullValue($node->filterXPath('//strasse')); $pickup->time = $this->stringToDateTime($pickupDate.' '.$pickupTime); $pickup->price = $price; $mapping = $this->stringToArray($node->attr('zuordnung')); $pickup->mapping = array_map(function ($index) { return (int) $index - 1; }, $mapping); $pickups[$pickupId] = $pickup; }); return $pickups; } }