[PHP] Count moet nu echt 0 teruggeven

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • verytallman
  • Registratie: Augustus 2001
  • Laatst online: 18-08 18:12
Ik heb de volgende code:
PHP:
1
2
3
4
5
6
$a = "";
$a = preg_split("/\s+\w/", $keywordPhrase); // Dit heeft in mijn eigen code een betekenis maar doet er nu ff niet toe
if (is_array($a)) {
  $b = count($a);
}
print_r($b);

Als resultaat krijg krijg ik nu te zien: "1"

Maar dit klopt toch niet ? Ik moet toch "0" terugkrijgen
De if doe ik nu ook alleen om aan te geven dat $a wel degelijk een array is.

http://nl3.php.net/manual/nl/function.count.php

Acties:
  • 0 Henk 'm!

  • LauPro
  • Registratie: Augustus 2001
  • Laatst online: 19-09 16:51

LauPro

Prof Mierenneuke®

Voor zover ik weet bevat een array altijd minimaal 1 element in PHP. Bovendien zorgen functies zoals preg_split er vrij snel voor dat er elementen ontstaan, al is het een leeg element. En PHP is niet fixed-typed hè ;) .

Inkoopacties - HENK terug! - Megabit
It is a war here, so be a general!


Acties:
  • 0 Henk 'm!

  • Bergen
  • Registratie: Maart 2001
  • Laatst online: 07-09 11:44

Bergen

Spellingscontroleur

verytallman schreef op zaterdag 18 november 2006 @ 01:06:
Maar dit klopt toch niet ? Ik moet toch "0" terugkrijgen (en ook nog in arrayvorm)
euh, als je print_r($a) doet ja, maar je doet print_r($b) en $b is gewoon een integer, geen array.

Acties:
  • 0 Henk 'm!

  • verytallman
  • Registratie: Augustus 2001
  • Laatst online: 18-08 18:12
Mijn redenatie is alsvolgt:

- $a is een array (zie if check)
- count moet bij een lege array 0 teruggeven (zie php.net)

Bovendien kan een array toch wel leeg zijn?
Niet fixed type als van type variabelen declareren? Maar PHP zegt wel dat $a een array is.

Acties:
  • 0 Henk 'm!

  • verytallman
  • Registratie: Augustus 2001
  • Laatst online: 18-08 18:12
Bergen schreef op zaterdag 18 november 2006 @ 01:16:
[...]
euh, als je print_r($a) doet ja, maar je doet print_r($b) en $b is gewoon een integer, geen array.
Ja idd, klein type foutje.

Nu zie ik ook waar het fout gaat, de preg_split() , ook al vind hij 0 matches (!) , maakt toch een key aan met een lege waarde.

Zie daar de count 1...

Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Als preg_split niet kan splitten returned het de hele string in een array. Dat gebeurt hier ook.

[ Voor 7% gewijzigd door PrisonerOfPain op 18-11-2006 01:24 ]


Acties:
  • 0 Henk 'm!

  • verytallman
  • Registratie: Augustus 2001
  • Laatst online: 18-08 18:12
Het antwoord is:
PHP:
1
$a = preg_split("/\s+\w/", $keywordPhrase, -1, PREG_SPLIT_NO_EMPTY);

Nu returned preg_split alleen "non-empty" matches.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Hij is toch ook niet empty? Je hebt toch domweg één array-element, zoals PrisonerOfPain al opmerkt? :? Dat staat overigens ook gewoon in de manual. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1