[php]checken of array element bestaat na explode

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • nikao
  • Registratie: November 1999
  • Laatst online: 10-02-2022
ik heb een txt file met daarin wat gegevens.. per rij uiteraard en gescheiden door een ;
nu hebben sommige rijen meer info dan andere (die hebben lege 'kolommen'
zeg maar) ..
maar hoe check ik dit nu?..

dit werkt:

PHP:
1
2
3
4
5
6
7
8
9
10
11
$info = file("info.txt");

$nr=0;

while($info[$nr]) {
    $entry = explode(";",$info[$nr]);
    
    if ($entry[0] != ''){
                       //hier dus de acties
                }
}

maar checken op de laatste wil niet op deen of andere manier
PHP:
1
if ($entry[2] !=''){}

en
PHP:
1
if ($entry[2]){}

werken beide niet..
als ik echter die $entry[2] echo is dat wel leeg..

me txt file ziet er bijvoorbeeld zo uit:
code:
1
2
3
4
landje;informatie over landje;en dit land heeft nog een kolom;
nog eenlandje;info;
3e landje;nog meer info;deze ook;
4elandje;duuuus;


blijkbaar leest ie nog wel wat in voor $entry[2] maar ik snap niet waarom die check of hij '' is niet werkt..
iemand enig id?

Acties:
  • 0 Henk 'm!

Verwijderd

misschien zit er nog een control char achter? zoals newline (\n), probeer eerst is

PHP:
1
if (trim($entry[2]))

Acties:
  • 0 Henk 'm!

  • nikao
  • Registratie: November 1999
  • Laatst online: 10-02-2022
jeps..thats it 8) .. thx!

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

count($entry) geeft het aantal elementen in de array
isset($entry[2]) geeft true als het element bestaat, false als het niet bestaat.
Erg basic imho....

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • nikao
  • Registratie: November 1999
  • Laatst online: 10-02-2022
ja maar probleem was dus dat ie wel bestond maar leeg was . .(en niet leeg in de zin dat je dat checkt met '' )

Acties:
  • 0 Henk 'm!

Verwijderd

nikao schreef op 18 March 2003 @ 15:49:
ja maar probleem was dus dat ie wel bestond maar leeg was . .(en niet leeg in de zin dat je dat checkt met '' )

Kan niet. explode geeft alleen waardes terug als het de delimiter tegenkomt.

Als het twee delimiters achter elkaar tegenkomt dan is de waarde gewoon een lege string.

Acties:
  • 0 Henk 'm!

  • nikao
  • Registratie: November 1999
  • Laatst online: 10-02-2022
ja maar check mijn eerste post:

in geval van een rij als deze:
entry0;entry1;

werkte het niet als je checkte of entry 2 bestond (dit was altijd zo) of dat ie leeg was (was nooit zo) ..
met trim() werkt het overigens

Acties:
  • 0 Henk 'm!

Verwijderd

nikao schreef op 18 March 2003 @ 15:58:
ja maar check mijn eerste post:

in geval van een rij als deze:
entry0;entry1;

werkte het niet als je checkte of entry 2 bestond (dit was altijd zo) of dat ie leeg was (was nooit zo) ..
met trim() werkt het overigens

Ja, maar hetgeen je daarvoor zei klopte gewoon niet helemaal :)
De laatste delimeter zorgt ervoor dat de newline en/of carriage return in $entry['2'] komt. Dat is niet echt leeg te noemen, zoals je zei ;)

met trim kun je die wel weghalen, zodat het inderdaad een lege string oplevert.

Acties:
  • 0 Henk 'm!

  • RedRose
  • Registratie: Juni 2001
  • Niet online

RedRose

Icebear

nikao schreef op 18 March 2003 @ 15:58:
ja maar check mijn eerste post:

in geval van een rij als deze:
entry0;entry1;

werkte het niet als je checkte of entry 2 bestond (dit was altijd zo) of dat ie leeg was (was nooit zo) ..
met trim() werkt het overigens
Als je weet hoeveel 'kolommen' een 'rij' maximaal mag hebben, kan je heel makkelijk checken welke 'velden' leeg zijn en wanneer je naar de volgende regel kan gaan en newline characters tegen zal komen. :)

Sundown Circus


Acties:
  • 0 Henk 'm!

  • nikao
  • Registratie: November 1999
  • Laatst online: 10-02-2022
ja ok.. mijn bewoordingen waren niet helemaal juist inderdaad :) ..

Acties:
  • 0 Henk 'm!

Verwijderd

Overigens, zou ik als ik jou was wel rekening houden met het feit dat bijvoorbeeld $entry['1'], $entry['2'] ec. helemaal niet hoeven te bestaan, als er iets mis is met het bestand. Staat zo slordig als je script zich daar op verslikt ;)

Acties:
  • 0 Henk 'm!

  • nikao
  • Registratie: November 1999
  • Laatst online: 10-02-2022
ja klopt.. momenteel check ik alleen of de rij er wel is door te kijken of entry[0] bestaat..
zal nog even een extra check inbouwen.. thx voor de tip :)

Acties:
  • 0 Henk 'm!

  • matthijsln
  • Registratie: Augustus 2002
  • Laatst online: 13:47
btw, in plaats van isset() gebruik ik zelf liever array_key_exists(), dat vind ik wat duidelijker.

Acties:
  • 0 Henk 'm!

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 17-09 07:55

thomaske

» » » » » »

matthijsln schreef op 18 March 2003 @ 21:35:
btw, in plaats van isset() gebruik ik zelf liever array_key_exists(), dat vind ik wat duidelijker.
Die functie is 3 x zo lang.. dat duurt veel te lang om die te typen ;)

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."

Pagina: 1