[PHP] String in array

Pagina: 1
Acties:

  • kaandorp
  • Registratie: November 1999
  • Laatst online: 03-09 22:36
Hele domme vraag met een vrij simpel antwoord volgens mij, maar ik kan er gewoon ff niet op komen. Soort hersen-overflow vandaag.

Ik wil een string bijv "ABCD" letter voor letter in een array plaatsen.
Dus:
array[1] = A
array[2] = B
array[3] = C
array[4] = D

Is er zoiets? Kan ik ook met een functie een bepaalde letter van de string gebruiken? Dus bijv alleen de derde letter?

Verwijderd

Elke string is al een array van elke letter apart.
PHP:
1
<?$var = "blaat";echo $var[2]; //geeft 'a'?>

  • kaandorp
  • Registratie: November 1999
  • Laatst online: 03-09 22:36
Kan niet makkelijker ;) TNX!

  • Banpei
  • Registratie: Juli 2001
  • Laatst online: 04-09 16:26
Misschien is het makkelijker met chr(int) waarbij de int dus de character waarde is. Hoofdletter A is bijvoorbeeld 65.

Zie ook de ASCII tabel daarvoor... ;)

edit:

Lees dus de vraag niet goed en zie dat er al een beter antwoord was... Gomen! ;)

Verwijderd

en als je em in een array wil zetten doe je dat gewoon met een loopje
PHP:
1
<?for($i=0;$i<=$string.lenght;$i++){$array[i]=$string[i]}?>

Hoewel het voor php dus heel makkelijk gaat is deze code universeler

  • SyphOn
  • Registratie: Juni 2001
  • Laatst online: 05-09 13:01
Je kan dat toch gewoon ook zo doen?

$var[1] = "A";
$var[2] = "B";
$var[3] = "C";

Of zie ik dit verkeerd?

Verwijderd

Op dinsdag 04 juni 2002 16:36 schreef SyphOn het volgende:
Je kan dat toch gewoon ook zo doen?

$var[1] = "A";
$var[2] = "B";
$var[3] = "C";

Of zie ik dit verkeerd?
Dat zie je goed, maar het is natuurlijk wel HEEL erg STATISCH >:) Persoonlijk ga ik voor een for-loopje, hoewel
dit wel een beetje overbodig is.......... :P

  • Rense Klinkenberg
  • Registratie: November 2000
  • Laatst online: 09-08 19:19
PHP:
1
<?$data = 'abcd';$data_array = preg_split('!.!', $data);?>

Maar da's misschien meer iets voor de regex liefhebbers ;)

  • SyphOn
  • Registratie: Juni 2001
  • Laatst online: 05-09 13:01
$var = array("A","B","C","D");

for ($i=0; $i < count($var); $i++)
printf("$var[$i]<br>");

Werkt ook nog :D

  • Flake
  • Registratie: Februari 2001
  • Laatst online: 01-11-2024
Weet je, ik vind P&W opeens geen hol meer aan. Alle vragen worden te snel behandeld :'(

  • SyphOn
  • Registratie: Juni 2001
  • Laatst online: 05-09 13:01
Op woensdag 05 juni 2002 10:08 schreef SONiCB00M het volgende:
Weet je, ik vind P&W opeens geen hol meer aan. Alle vragen worden te snel behandeld :'(
Uhh... is dat niet de bedoeling :?

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

<ongenuanceerd>
slaat allemaal helemaal nergens op...
</ongenuanceerd>


Een string is een array van characters. punt
Meer hoef je er niet aan te doen ;)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • SyphOn
  • Registratie: Juni 2001
  • Laatst online: 05-09 13:01
Op woensdag 05 juni 2002 10:12 schreef drm het volgende:
<ongenuanceerd>
slaat allemaal helemaal nergens op...
</ongenuanceerd>


Een string is een array van characters. punt
Meer hoef je er niet aan te doen ;)
Verklaar uzelf nader. :P
Kan ik weer wat leren. of misschien snap ik het dan wel :D

  • SJR
  • Registratie: Januari 2000
  • Laatst online: 15-02 13:58

SJR

Op woensdag 05 juni 2002 10:12 schreef drm het volgende:
Een string is een array van characters. punt
Meer hoef je er niet aan te doen ;)
Ja, maar niet in PHP, dus het heeft ook geen zin om dat hier te gaan roepen.


btw: leuk icoon, Calvin & Hobbes rules

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

SJR:
maar niet in PHP, dus het heeft ook geen zin om dat hier te gaan roepen.
ook in PHP

Dat wil zeggen, in dit verband heeft het geen enkele zin een string te converteren naar een array, gezien een string zich gedraagt als een array (in PHP)...
btw: leuk icoon, Calvin & Hobbes rules
Klopt :)
SyphOn:
Verklaar uzelf nader. :P
Wat ik dus bedoel is dat een string zich gedraagt als een array van characters. Het heeft dus geen enkele zin een string te converteren naar een array. Als je dan toch perse wilt dat php het ook een array noemt, kun je 'm inderdaad expliciet gaan converteren, maar ik vraag me af in welk verband dit handig zou zijn?

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • SyphOn
  • Registratie: Juni 2001
  • Laatst online: 05-09 13:01
Op woensdag 05 juni 2002 10:39 schreef drm het volgende:
Wat ik dus bedoel is dat een string zich gedraagt als een array van characters. Het heeft dus geen enkele zin een string te converteren naar een array. Als je dan toch perse wilt dat php het ook een array noemt, kun je 'm inderdaad expliciet gaan converteren, maar ik vraag me af in welk verband dit handig zou zijn?
Dus je kan gewoon zo doen:
PHP:
1
<?$var = "ABCD";print"$var[1]<br>";print"$var[2]<br>";print"$var[3]<br>";print"$var[4]";?>

En dan wordt de output:

A
B
C
D

?

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

SyphOn:
Dus je kan gewoon zo doen:
[snip]
exact :)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • SyphOn
  • Registratie: Juni 2001
  • Laatst online: 05-09 13:01
Dus arrays zijn gebruik je alleen als je A, B, C of D nog een waarde wil geven.

Zoals dit:
PHP:
1
<?$var = array(   "A" => "aa",  "B" => "bb",  "C" => "cc",  "D" => "dd");?>

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

SyphOn:
Dus arrays zijn gebruik je alleen als je A, B, C of D nog een waarde wil geven.
Nee, arrays gebruik je in een ander verband. Arrays zijn lijsten van gegevens. Strings zijn tekenreeksen. De overeenkomst (dat een string een array is) heeft verder in feite niets van doen met de toepassing van een array, ajbwib...

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • SyphOn
  • Registratie: Juni 2001
  • Laatst online: 05-09 13:01
[Knip]
ik weet niet hoe ik dit moet formuleren |:(
[/Knip]

  • SyphOn
  • Registratie: Juni 2001
  • Laatst online: 05-09 13:01
Op woensdag 05 juni 2002 11:26 schreef drm het volgende:

[..]

Nee, arrays gebruik je in een ander verband. Arrays zijn lijsten van gegevens. Strings zijn tekenreeksen. De overeenkomst (dat een string een array is) heeft verder in feite niets van doen met de toepassing van een array, ajbwib...
Dat weet ik wel.
Ik bedoelde dat zo dat ik het verschil snap tussen "dat een string een array is" en "de functie array".

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 21:46
Er is een functie waarmee je een tekenreeks kunt doorlopen, dat je opgeeft van A tot Z en dat is die dan steeds returnt.

Ik heb hem hier een keer gezien, die persoon wilde toen ingewikkeld doen met AA AB AC... BA BB BC... ZX ZY ZZ.

Ik weet ff niet meer hoe die functie heet. Iemand :?

  • Banpei
  • Registratie: Juli 2001
  • Laatst online: 04-09 16:26
Ik weet ff niet meer hoe die functie heet. Iemand :?
code:
1
2
3
4
5
for ($i=0; $i<26; $i++)
  {
  for($j=0; $j<26; $j++)
    echo chr(65+$i).chr(65+$j)." ";
  }

Dit misscchien??? ;)

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

Op woensdag 05 juni 2002 11:37 schreef SyphOn het volgende:

[..]

Dat weet ik wel.
Ik bedoelde dat zo dat ik het verschil snap tussen "dat een string een array is" en "de functie array".
Er is geen "functie array". In PHP lijkt dat zo vanwege de loose typing. Hierdoor hebben ze een andere manier gebruikt om een array te definieren. Het is eigenlijk een functie die de argumenten cast naar een array. Vergelijk het met a=int(b) voor een integer.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • SyphOn
  • Registratie: Juni 2001
  • Laatst online: 05-09 13:01
Dat verklaart een hoop.

  • SyphOn
  • Registratie: Juni 2001
  • Laatst online: 05-09 13:01
$i=0;
while($string=~/[A-Z]/g) { $i++};

Dit telt het aantal hoofdletters bedoel je dit?
Ik kan niet op maken wat je er precies mee bedoelt.

Verwijderd

Dit is toch niet moeilijk :?

Maak een forloopje van $i=0 tot $i = strlen($string), dus zoiets (even uit mn hoofd):
code:
1
2
3
4
5
$string = "blaat";
for($i = 0; $i <= strlen($string); $i++)
{
$arr_string[$i] = $string[$i];
}

Correct me if Im wrong!

Verwijderd

Op woensdag 05 juni 2002 12:33 schreef sKiLL4 het volgende:
Dit is toch niet moeilijk :?

Maak een forloopje van $i=0 tot $i = strlen($string), dus zoiets (even uit mn hoofd):
code:
1
2
3
4
5
$string = "blaat";
for($i = 0; $i <= strlen($string); $i++)
{
$arr_string[$i] = $string[$i];
}

Correct me if Im wrong!
idd \0 charakter wordt niet mee genomen in strlen. Maar ik weet niet of PHP zich hier aan houdt en deze dus aan een string vast hangt.

  • SyphOn
  • Registratie: Juni 2001
  • Laatst online: 05-09 13:01
Als hij ff duidelijk maakt wat hij er mee wil doen dan is het een stuk makkelijker om hem te helpen.

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 21:46
En toch was er een functie voor :(

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 19:42
Op woensdag 05 juni 2002 10:12 schreef drm het volgende:
Een string is een array van characters. punt
Meer hoef je er niet aan te doen ;)
Dat is duidelijk niet waar. Een stringvariabele heeft als type 'string' en niet 'array'. Je kan er dan ook geen functies op toepassen die alleen op arrays werken, zoals bijvoorbeeld 'keys' (of elke andere array functie).

Dat je inderdaad karakters uit een string kan selecteren op een vergelijkbare manier als een array van karakters, wil nog niet zeggen dat een string en een array hetzelfde zijn.

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 19:42
Op woensdag 05 juni 2002 12:33 schreef sKiLL4 het volgende:
Correct me if Im wrong!
Dat moet natuurlijk < ipv <= zijn. Los daarvan vind ik:
code:
1
  lijstje = explode("","whatever");

een stuk mooier. Niet alleen omdat het veel korter is, maar ook omdat het uitdrukt wat je wil doen (een string opslitsen in afzonderlijke letters) in plaats van hoe je het moet doen.

  • SyphOn
  • Registratie: Juni 2001
  • Laatst online: 05-09 13:01
Op woensdag 05 juni 2002 17:40 schreef Soultaker het volgende:
[knip]
Wie moet ik nu geloven?

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op woensdag 05 juni 2002 23:22 schreef SyphOn het volgende:
Wie moet ik nu geloven?
Beide, Soultaker legt de korrel zout die je bij drm's verhaal moet nemen uit ;)

[kort-door-de-bocht]
Oftewel, strings zijn min of meer array's maar niet van het type array waardoor je wel de elementen rechtstreeks kan aan spreken maar niet de array functies kan toepassen in de meeste gevallen.
[/kort-door-de-bocht]

[edit]
In bijvoorbeeld C zijn het juist wel array's er zijn eigenlijk geen strings (behalve de character array's dus) daar in.

  • SyphOn
  • Registratie: Juni 2001
  • Laatst online: 05-09 13:01
Ik vat het nog steeds niet helemaal :'(

Moet ik ook maar es de manual van php maar helemaal door lezen :D

Heb ik gelijk wat te doen.

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

ACM:
Beide, Soultaker legt de korrel zout die je bij drm's verhaal moet nemen uit ;)
Dat vind ik een mooie :D
* drm deed idd even veel geblaat weinig wol O-)
Oftewel, strings zijn min of meer array's maar niet van het type array waardoor je wel de elementen rechtstreeks kan aan spreken maar niet de array functies kan toepassen in de meeste gevallen.
ongeveer, ja.

Een paar "oddities" die ik tegen ben gekomen tijdens een beetje dieper onderzoeken hiervan:
  • Je krijgt een warning 'Array to string conversion' wanneer je een string-functie loslaat op een array. De functie geeft echter wel het verwachte resultaat.
    code:
    1
    2
    
    $array = array ( 'b', 'l', 'a', 'a', 't' );
    echo strlen ( $array );
  • Je zou verwachten dat die conversie dan impliciet is. Expliciet casten geeft echter de zelfde warning:
    code:
    1
    2
    3
    
    $array = array ( 'b', 'l', 'a', 'a', 't' );
    $string = (string) $array;
    echo strlen ( $string );

    Maar levert wel weer het verwachte resultaat op. Het '@' teken heeft uiteraard als resultaat dat de warning wordt onderdrukt.
    code:
    1
    
    $string = @((string) $array);
  • Gaat men echter van string naar array casten, dan krijg je niet een array van de characters van de string, maar een array met als eerste element de string.
    code:
    1
    2
    
    $string = 'blaat';
    print_r ( (array) $string );
  • In de manual wordt indexen aanspreken in een string niet met [..] gedaan, maar met {..}
    code:
    1
    2
    3
    
    $string = 'blaat';
    for ( $a = 0; $a < strlen ( $string ); $a ++ )
       echo "$a : ", $string{$a};

    Waarom ze dat niet gewoon bij [..] hebben gelaten (want dat werkt ook naar verwachting) begrijp ik niet...
Af en toe zit PHP niet echt logisch in mekaar imo...

Maar goed, de conclusie is iig dat dit
drm:
Een string is een array van characters. punt
Niet zo gezegd mag worden O-)

* drm guilty

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Op woensdag 05 juni 2002 17:43 schreef Soultaker het volgende:

[..]
code:
1
  lijstje = explode("","whatever");

een stuk mooier. Niet alleen omdat het veel korter is, maar ook omdat het uitdrukt wat je wil doen (een string opslitsen in afzonderlijke letters) in plaats van hoe je het moet doen.
Op zich wel, maar het is krom om niets in te vullen in een functie. je wil hem dus explod'en op niets.. komt een beetje raar over
Een string is een array van characters. punt
Dit is onzin. Dat je in php niet aan hoeft te geven wat voor soort een variabele is, is iets anders. Door bijvoorbeeld explode() of array() te gebruiken zet php de var automatisch om in een array. Wanneer je dan $array[1] gebruikt, weet hij dat hij deze waarde uit de array moet halen. Wanneer het type een string is, pakt hij het [1] command anders op, door het zoveelste character uit een string te pakken. Het is dus zo dat php voor [x] een waarde toewijst aan de hand van de soort variabele

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op vrijdag 07 juni 2002 19:02 schreef sKiLL4 het volgende:
Dit is onzin. Dat je in php niet aan hoeft te geven wat voor soort een variabele is, is iets anders. Door bijvoorbeeld explode() of array() te gebruiken zet php de var automatisch om in een array. Wanneer je dan $array[1] gebruikt, weet hij dat hij deze waarde uit de array moet halen. Wanneer het type een string is, pakt hij het [1] command anders op, door het zoveelste character uit een string te pakken. Het is dus zo dat php voor [x] een waarde toewijst aan de hand van de soort variabele
zie mijn relaas hierboven.
Echt onzin is het niet, de interne representatie van een string is in de meeste/een aantal talen (diegene waarvan ik wat meer details ken, java, c, c++, php ook want dat leunt zwaar op c, perl vast ook wel zie php ;)) gewoon dmv een character-array.

En dat is dus ook gewoon rechtstreeks aanspreekbaar.

  • Grum
  • Registratie: Juni 2001
  • Niet online
Wat zijn we allemaal aant doen hier ?

Gaat om php en et splitten van een string naar een array.

Dit kan mbv:

1/ undocumented feature dat strings in php arrays zijn (en ook in c blablabla)
2/ preg_split
PHP:
1
<?$theString = 'Dit is een string';$theChars = preg_split( '//', $theString, -1, PREG_SPLIT_NO_EMPTY );?>

3/ settype
PHP:
1
<?$theString = 'Dit is een string';settype( $theString, 'array' );?>

Kom op zeg mensen .. gaan we een 35tal posts neerzetten terwijl het nergens meer over gaat.
Pagina: 1