Avatar billede Slettet bruger
31. januar 2010 - 15:47 Der er 10 kommentarer og
1 løsning

Test af array indhold

Test af array indhold ? ? ?

if(isset($_POST[danarbsed])){
   
    if($antal = sizeof($_POST['med4']) >0) {
    echo "Antal er $antal";

    {//if($antal)
}//if(isset


fra formen
....
<input type="text" name="med4[]" value="" size="1" maxlength="2"/>
....

[med4] => Array
        (
            [0] =>
            [1] =>
            [2] =>
            [3] =>
            [4] =>
            [5] =>
            [6] =>
            [7] =>
            [8] =>
            [9] =>
            [10] =>
            [11] =>
            [12] =>
            [13] =>
        )

[med4] => Array
        (
            [0] => er
            [1] => er
            [2] => er
            [3] =>
            [4] =>
            [5] =>
            [6] =>
            [7] =>
            [8] =>
            [9] =>
            [10] =>
            [11] =>
            [12] =>
            [13] =>
        )



       
Uanset om array'er er tomt (?), eller der er tre elem. i, er svaret Antal er 1.
Hvordan tester man om et array er sat, eller om der er noget/hvor mange elementer der i???
Avatar billede repox Seniormester
31. januar 2010 - 16:03 #1
Det er fordi du returnerer udtrykkets tal-værdi og ikke værdien af din sizeof().
Du bør iøvrigt også vænne dig af med at anvende alias funktionerne.




if(isset($_POST[danarbsed]))
{
    $antal = count($_POST["med4"]);
    if($antal > 0)
        echo "Antal er $antal";


}//if(isset





Og så bør du også vænne dig af med at evaluere funktionskald og foretage dem inden. Det skaber et mere logisk og konstrueret overblik som samtidig afhjælper en logisk fejl som den du præsenterede.
Avatar billede repox Seniormester
31. januar 2010 - 16:07 #2
Og der sprang jeg endda en grim en over; vær konsistent med din kodesyntaks.
Brug quotes i dine array indexes når du tilgår dem direkte - det andet er grimt og kan give uventede resultater, da index-angivelsen først vil evalueres som en konstant OG DEREFTER som en streng.



if(isset($_POST["danarbsed"])) // Quotes i array-indeks.
{
    $antal = count($_POST["med4"]);
    if($antal > 0)
        echo "Antal er $antal";


}//if(isset

Avatar billede Slettet bruger
31. januar 2010 - 16:29 #3
Tak for dit fine svar, som jeg synes er fint, -er strakt gået på afvænning!!!
Men fik vist alligevel ikke forklaret at jeg ønsker at teste på hvor mange værdier jeg har i array'et.
Nøkle og verdi som det hedder på norsk.
Jeg udskriver 14 "input" linjer og markerer så tre af dem, som så bliver "slæbt" med videre. Men count($_POST["med4"]); svarer selvfølgelig hvergang Antal er 14 (nøkler) uanset hvormange jeg har markeret.
Avatar billede repox Seniormester
31. januar 2010 - 16:38 #4
Well, jeg ville gøre det således:


  $i = 0;
  foreach( $_POST["med4"] as $key => $value)
  {
    if( strlen($value) > 0 )
      $i++;
  }

  echo "Der er ".$i." markeret.";

Avatar billede Slettet bruger
31. januar 2010 - 16:54 #5
foreach($_POST["med4"] as $ngl => $ini) {
    $ini = trim($ini);
    if(!empty($ini)){
    $i++;
....osv

øv jeg troede der var en eller anden funky nem måde at gøre det på.

havde prøvet med isset, empty, in_array etc.,og  hvad jeg eller kunne finde på, + som ovensstående.

Tak for svarende. Lægger du et svar, så jeg kan gi' point.
Avatar billede repox Seniormester
31. januar 2010 - 16:57 #6
Desværre - der skal lidt manuelt arbejde til indimellem ;)
Avatar billede coderdk Praktikant
31. januar 2010 - 21:47 #7
Prøv:

$result = array_filter( $_POST["med4"] );
echo count( $result ) . " er markeret";
Avatar billede repox Seniormester
31. januar 2010 - 21:53 #8
#7
Det ville også være en nem løsning, i tilfælde af det ikke er nødvendigt at bibeholde arrayets faktiske størrelse. Det var mit udgangspunkt, men det var kun en antagelse...
Avatar billede coderdk Praktikant
31. januar 2010 - 22:48 #9
Så har du jo stadig $_POST-variablen :)
Avatar billede repox Seniormester
31. januar 2010 - 22:56 #10
Ja, det er naturligvis rigtigt :)
Avatar billede Slettet bruger
31. januar 2010 - 23:00 #11
...takker og bukker.
Men array_filter havde jeg ikke prøvet.

Arrayets faktiske størrelse skal bibeholdes.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester