[PHP]Cannot use a scalar value as an array

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Sorry voor de onduidelijke topictitel, maar kon niets bets bedenken.
Ik zit met het volgende probleem, ik probeer een 2d array aan te maken, maar op de een of andere manier lukt dat niet.... :S
Dus ik maak effe een simpel scriptje, maar nu werkt dat ook niet, ik heb nu dit:

PHP:
1
2
3
4
5
6
7
8
9
10
11
<?php
    for($i =0; $i<10; $i++)
    {
        $blaat[$i] = $i;
    }
    for($i=0; $i<10; $i++)
    {
        $blaat[0][$i] = $i;
    }
    print_r($blaat);
?>


Als ik dat uitvoer krijg ik


Warning: Cannot use a scalar value as an array in C:\Program Files\nusphere\phped\Projects\youry\test.php on line 8
[...]

Array ( [0] => 0 [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 [6] => 6 [7] => 7 [8] => 8 [9] => 9 )
Hij wil dus geen 2d array maken, terwijl dit naar mijn idee toch moet werken |:(

Zoeken op GOT leverde niets bruikbaars op, en google al helemala niet

[ Voor 9% gewijzigd door Verwijderd op 03-06-2005 13:36 ]


Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 21-09 12:54
$blaat is toevallig niet een getal?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
euhm nee?
dit is de complete script, ook als ik doe $blaat = array(); of $blaat = array(array()); krijg ik hetzelfde

Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 21-09 14:28
Je zegt:
$blaat[0]=0;
Vervolgens doe je dit:
$blaat[0][0]=0;
Dat kan niet want blaat[0] is een string geen array.

Acties:
  • 0 Henk 'm!

  • MeIsTwisted
  • Registratie: November 2001
  • Laatst online: 28-07-2023

MeIsTwisted

not a Twisted mind

je wijst $i toe, $i is geen array, dus je kan die niet gebruiken als array

Multimonitor is relax :P


Acties:
  • 0 Henk 'm!

  • mosymuis
  • Registratie: Maart 2002
  • Laatst online: 27-04 11:53
code:
1
2
3
4
5
6
7
8
9
10
11
<?php
    for($i =0; $i<10; $i++)
    {
        $blaat[$i] = array();
    }
    for($i=0; $i<10; $i++)
    {
        $blaat[0][$i] = $i;
    }
    print_r($blaat);
?>

Zou wel moeten werken.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
hmm, ow ja tuurlijk!!
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<?php
    for($i =0; $i<10; $i++)
    {
        $blaat[$i] = $i;
    }
    $blaat[0] = array();
    for($i=0; $i<10; $i++)
    {
        $blaat[0][$i] = $i;
    }
    print_r($blaat);
?>


zo werkt het, bedankt!!

Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Zo heb je nog steeds geen 2d array hoor. Nou heb je een 1-dimensionaal array waarbij de eerste waarde toevallig zelf ook een array is.

PHP:
1
2
3
4
5
6
for ($r = 0; $r < 10; $r++) {
    for ($k = 0; $k < 10; $k++) {
        $blaat[$r][$k] = $k;
    }
}
print_r($blaat);

Zo heb je wel een 2-dimensionaal array.

Overigens had je ook je foutmelding gewoon in Google kunnen stoppen, en dan had je meteen een heleboel info gevonden. Had je wel gezocht voor je je topic postte?

'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.


Acties:
  • 0 Henk 'm!

  • El Psycho
  • Registratie: September 2002
  • Laatst online: 26-07 09:41
Verwijderd schreef op vrijdag 03 juni 2005 @ 13:51:
hmm, ow ja tuurlijk!!
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<?php
    for($i =0; $i<10; $i++)
    {
        $blaat[$i] = $i;
    }
    $blaat[0] = array();
    for($i=0; $i<10; $i++)
    {
        $blaat[0][$i] = $i;
    }
    print_r($blaat);
?>


zo werkt het, bedankt!!
Als je een twee-dimensionale array wilt maken dan werkt dat niet... jij maakt alleen van blaat[0] (dus het eerste element) een array. blaat[1] t/m blaat[9] blijven scalars. Dit omdat je in de eerste loop:
PHP:
1
2
3
4
5
6
<?php
    for($i =0; $i<10; $i++)
    {
        $blaat[$i] = $i;
    }
?>

Elk element een scalar maakt en daarna alleen blaat[0]
PHP:
1
   $blaat[0] = array();

verandert in een array.

Wat je wilt doen is elk element van array blaat een array laten zijn. Dus wat mosymuis zei werkt voor jou:

PHP:
1
2
3
4
5
6
<?php
    for($i =0; $i<10; $i++)
    {
        $blaat[$i] = array();
    }
?>


Als je die array dan ook nog helemaal wilt vullen moet je voor elke iteratie van die loop nog een loop maken om de elementen van de afzonderlijke arrays te vullen:
PHP:
1
2
3
4
5
6
7
8
9
10
<?php
    for($i =0; $i<10; $i++)
    {
        $blaat[$i] = array(); // Huidig element van blaat wordt een array
        for ($j=0; $j<10;$j++)
        {
             blaat[$i][$j]=$j; // Huidig element van blaat[$i] wordt een scalar
        }
    }
?>

[ Voor 3% gewijzigd door El Psycho op 03-06-2005 14:07 ]

Pagina: 1