Bekijk Volledige Versie : een- en meerdimensionale en een associatieve array?
Hallo NIWS-S,
Ik moet een duidelijke beschrijving hebben van de volgende arrays:
Eendimensionale array,
Meerdimensionale array,
En een associatieve (named) array.
Op PHP.net kan ik nergens een duidelijke omschrijving vinden. Ook google
heeft geen duidelijke uitleg (voor zover mijn zoek capaciteiten het
toelaten:)
Indien iemand mij een duidelijke uitleg zou kunnen geven, zou ik dat zeer op
prijs stellen.
Alvast bedankt,
Sven
--spatie
Het streepje wordt een puntje, voor een prive bericht.
Ronald Paul
07/12/03, 13:15
"Sven" <sven@enygma-demon.nl> schreef:
>Ik moet een duidelijke beschrijving hebben van de volgende arrays:
>Eendimensionale array,
<http://nl2.php.net/manual/en/language.types.array.php>:
|An array in PHP is actually an ordered map. A map is a type that maps
|values to keys. This type is optimized in several ways, so you can use
|it as a real array, or a list (vector), hashtable (which is an
|implementation of a map), dictionary, collection, stack, queue and
|probably more. Because you can have another PHP array as a value, you
|can also quite easily simulate trees.
>Meerdimensionale array,
Een meerdimensionale array is een array van array's. De waarde's van
deze array's kunnen op zichzelf natuurlijk ook weer array's bevatten
om drie of meer dimensies te creƫren.
>En een associatieve (named) array.
Bij een associatieve array worden de sleutel-waarde-paren bij elkaar
gehouden. Maar: er is geen duidelijke manier om een array blijvend
associatief te houden. Een simpele sort() schopt de associaties al
weer in de war. Let hier dus op en gebruik in dit soort gevallen dan
bijvoorbeeld asort().
--
Groet, Ronald
Sven wrote:
> Ik moet een duidelijke beschrijving hebben van de volgende arrays:
> Eendimensionale array,
> Meerdimensionale array,
Een array kun je zien als een tabel, of een lijst met waarden. Elke waarde
is gekoppeld aan een index. Bv
$arr = array( 'a', 'b', 'c', 'd');
echo $arr[2];
geeft : 'c'
De index begint namelijk op 0
Een meerdimensionale array heeft meerdere indexen. Een 2 dimensionale is dus
een matrix (of een schaakbord), een 3-dimensionale een kubus etc.
(Dat roep je dan aan met bv '$arr[ $x ][ $y ]')
> En een associatieve (named) array.
Dit kan een 1- of een meerdimensionaal array zijn, alleen de index is niet
een cijfer, maar een naam.
Bijvoorbeeld:
$persoon['naam'] = 'inca';
$persoon['leeftijd'] = 23;
$persoon['woonplaats'] = 'Wallawalla';
Je hoeft dan niet te onthouden welke index bij welke waarde hoort.
Opmerking: arrays in php kunnen verschillende typen bevatten, ook door
elkaar. De grootte hoeft niet van te voren vastgelegd te worden, en indexen
kunnen tesamen met key-names (associatief) gebruikt worden.
Verder: lees de documentatie bij de array-functies op php en experimenteer
er wat mee, dan wordt het vanzelf duidelijk
--
Inca
NEE - Geen Jomanda
JA - Wel als ze d'r mond houdt
http://www.poldermodelstickers.nl/
John Bokma
07/12/03, 18:30
Sven wrote:
> Hallo NIWS-S,
>
> Ik moet een duidelijke beschrijving hebben van de volgende arrays:
> Eendimensionale array,
> Meerdimensionale array,
> En een associatieve (named) array.
Dit wordt ook wel een hash genoemd.
Een 1 dim array is: een of meer gegevens die elk afzonderlijk met een
geheel getal (index) te benaderen zijn.
Een meerdim array is: bovengenoemde gegevens zijn zelf arrays.
Een assoc array of hash is: een of meer gegevens die elk afzonderlijk
met een unieke sleutel te benaderen zijn.
Je zou een gewoon array dus een assoc array met unieke sleutels die uit
gehele getallen bestaan kunnen noemen.
--
Kind regards, without shoes
John in my private hell
running naked
http://johnbokma.com/ a wishing well
Ronald Paul wrote:
> Bij een associatieve array worden de sleutel-waarde-paren bij elkaar
> gehouden. Maar: er is geen duidelijke manier om een array blijvend
> associatief te houden. Een simpele sort() schopt de associaties al
> weer in de war.
Ik heb er eens over nagedacht, maar het idee van een asociatieve array is
dat de dingen op naam geordend zijn, en niet op index. Een sort() lijkt me
dus volstrekt niet van toepassing op een associatieve array.
--
Inca
JA - Wel blowen
NEE - Niet in de coffeeshop
http://www.poldermodelstickers.nl/
John Bokma
07/12/03, 22:00
Inca wrote:
> Ronald Paul wrote:
>
>>Bij een associatieve array worden de sleutel-waarde-paren bij elkaar
>>gehouden. Maar: er is geen duidelijke manier om een array blijvend
>>associatief te houden. Een simpele sort() schopt de associaties al
>>weer in de war.
>
>
> Ik heb er eens over nagedacht, maar het idee van een asociatieve array is
> dat de dingen op naam geordend zijn,
Veel implementaties van een assoc array hebben geen ordening op sleutels.
> en niet op index. Een sort() lijkt me
> dus volstrekt niet van toepassing op een associatieve array.
Je kan de sleutels sorteren. Voorbeeld, je kan een hash (assoc array)
maken met sleutel = bestandsnaam, en waarde = afmeting, en die dan
gesorteerd afdrukken.
Ik snap niet het door de war schop verhaal, tenzij je a la Perl een hash
als array gaat sorteren, inderdaad, dat geeft rommel :-D.
#!/usr/bin/perl -w
use strict;
my %hash = (
'Inca' => 'rood',
'John' => 'geel',
'Ronald Paul' => 'blauw',
);
print keys %hash, "\n";
print sort(keys %hash), "\n";
%hash = sort %hash;
print keys %hash, "\n";
Ronald PaulIncaJohn
IncaJohnRonald Paul
Ronald PaulIncageel
1e regel laat zien dat in Perl (en ik vermoed ook PHP) keys ongesorteerd
worden opgeslagen (i.v.m. performance een merge is O(log n) ).
2e regel sorteerd de hash keys. De gesorteerde sleutels kan je toekennen
aan een array, en de elementen uit die array gebruiken om de hash
gesorteerd af te lopen:
my (@keys) = sort keys %hash;
foreach my $key (@keys) {
print "$key - $hash{$key}\n";
}
3e regel sorteerd de hash (in Perl is dit een array intern) en
inderdaad, keys en values gaan dan door elkaar lopen. geel is ineens een
"key" geworden, en ik ben niet meer een key :-(
Allemaal Perl, maar ik neem aan dat PHP niet veel anders is.
--
Kind regards, without shoes
John in my private hell
running naked
http://johnbokma.com/ a wishing well
Ronald Paul
08/12/03, 00:00
John Bokma <postmaster@castleamber.com> schreef:
>Ik snap niet het door de war schop verhaal, tenzij je a la Perl een hash
>als array gaat sorteren, inderdaad, dat geeft rommel :-D.
Het kan ook eigenlijk niet in PHP blijkt:
$array = array
(
'Inca' => 'rood',
'John' => 'geel',
'Ronald' => 'blauw'
);
sort($array);
print_r($array);
geeft
Array
(
[0] => blauw
[1] => geel
[2] => rood
)
PHP kijkt bij een normale sort() van een associatieve array alleen
naar de waardes en gooit de keys weg.
--
Groet, Ronald
Michiel de Roo
08/12/03, 15:15
Ronald Paul wrote:
> John Bokma <postmaster@castleamber.com> schreef:
>
>
>>Ik snap niet het door de war schop verhaal, tenzij je a la Perl een hash
>>als array gaat sorteren, inderdaad, dat geeft rommel :-D.
>
>
> Het kan ook eigenlijk niet in PHP blijkt:
[knip]
>
> PHP kijkt bij een normale sort() van een associatieve array alleen
> naar de waardes en gooit de keys weg.
>
Onzin, het kan wel maar je moet asort gebruiken ipv sort.
<?
$array = array
(
'Inca' => 'rood',
'John' => 'geel',
'Ronald' => 'blauw'
);
asort($array);
print_r($array);
?>
geeft
Array
(
[Ronald] => blauw
[John] => geel
[Inca] => rood
)
Michiel.
Ronald Paul
08/12/03, 23:15
Michiel de Roo <michiel@mderooPUNTNL> schreef:
>> PHP kijkt bij een normale sort() van een associatieve array alleen
>> naar de waardes en gooit de keys weg.
>
>Onzin, het kan wel maar je moet asort gebruiken ipv sort.
Exact wat ik eerder in deze draad al zei.
--
Groet, Ronald