Ik heb er nu een hele tijd naar gekeken, dingen geprobeerd, maar ik zie niet waarom de functie niet gewoon een array met IP's returned zoals hij ooit heeft gedaan. Ik krijg het ook met geen mogelijkheid meer werkend. Ik heb het over de volgende functie:
Hij begint bij de eerste digit van het eerste IP en gaat door tot de eerste digit van het laatste IP. Daarbij moeten ook alle andere digits bekeken worden om te zien of er daar misschien meer van zijn. In mijn geval zijn de eerste drie altijd gelijk en alleen de laatste is anders. Als ik voor de return een print_r doe van $ips (die hij vlak er na moet returnen) krijg ik netjes de verwachte lijst met IP's. Prachtig.
Ik gebruik om de functie aan te roepen:
De laatste twee argumenten heeft ie niet nodig, aangezien daar standaardwaarden voor ingevuld zijn. Daar wordt ook verder inet over geklaagd tijdens het parsen.
Als ik nu na het uitvoeren een print_r doe van de $ips waar het array nu in zou moeten zitten dan krijg ik helemaal niets. Daardoor werken andere functies helaas ook niet meer, die doorbouwen op dat array.
Ik heb in de functie zelf op sommige plekken even een echo gedaan van wat er gebeurde. Hij begint netjes met 3x een loop, om vervolgens achter elkaar die IP's in de array te plaatsen. Daarna returned hij in principe 4 keer (van elke loop een keertje + de eerste aanroep), maar dat maakt voor de werking niet uit voor zover ik weet. Ook als ik daar neerzet dat hij alleen als $loop 0 is mag returnen (dus de laatste keer), krijg ik totaal niets terug. Help!
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
| function list_ips($from, $to, $loop = 0, $digit = '') { for($i = $from[$loop]; $i <= $to[$loop]; $i++) { $digit[$loop] = $i; if($loop <= 2){ list_ips($from, $to, $loop+1, $digit); } if(isset($digit[3])) { $ips[] = $digit[0].".".$digit[1].".".$digit[2].".".$digit[3]; } } return $ips; } |
Hij begint bij de eerste digit van het eerste IP en gaat door tot de eerste digit van het laatste IP. Daarbij moeten ook alle andere digits bekeken worden om te zien of er daar misschien meer van zijn. In mijn geval zijn de eerste drie altijd gelijk en alleen de laatste is anders. Als ik voor de return een print_r doe van $ips (die hij vlak er na moet returnen) krijg ik netjes de verwachte lijst met IP's. Prachtig.
Ik gebruik om de functie aan te roepen:
PHP:
1
| $ips = list_ips($array_from, $array_to) |
De laatste twee argumenten heeft ie niet nodig, aangezien daar standaardwaarden voor ingevuld zijn. Daar wordt ook verder inet over geklaagd tijdens het parsen.
Als ik nu na het uitvoeren een print_r doe van de $ips waar het array nu in zou moeten zitten dan krijg ik helemaal niets. Daardoor werken andere functies helaas ook niet meer, die doorbouwen op dat array.
Ik heb in de functie zelf op sommige plekken even een echo gedaan van wat er gebeurde. Hij begint netjes met 3x een loop, om vervolgens achter elkaar die IP's in de array te plaatsen. Daarna returned hij in principe 4 keer (van elke loop een keertje + de eerste aanroep), maar dat maakt voor de werking niet uit voor zover ik weet. Ook als ik daar neerzet dat hij alleen als $loop 0 is mag returnen (dus de laatste keer), krijg ik totaal niets terug. Help!
[ Voor 3% gewijzigd door Kaastosti op 11-02-2005 15:30 ]
Een vergissing is menselijk, maar om er echt een puinhoop van te maken heb je een computer nodig.