Tuli pikkuisen vastatuulta. Sellainen juttu on, että array sisältää samoja avainten nimiä. Pitäisi ne kaikki saada siitä keys-arrayhyn tähän tapaan:
<?php $array = array("title"=>"testi","text"=>"juttu1","text"=>"juttu2"); $keys = array(0=>"title",1=>"text",2=>"text"); ?>
Olen etsikellyt foreach-silmukasta esimekkejä mutta ei tunnu löytyvän. Ideoita?
Vastaus on, että siihen kirjoittaa toimivan ratkaisun.
PHP:ssa ei voi olla arrayssa kahta arvoa samalla avaimella:
Array ( [title] => testi [text] => juttu2 )
array_keys() tekee tarvittavan tempun:
https://www.php.net/manual/en/function.array-keys.php
mutta kuten jpa mainitsi, ei samaa avainta voi taulukossa olla kahteen kertaan.
Anna avaimille yksilöllinen tunniste jotenkin tyyliin:
text_1
, text_2
, text_3
Käyttämällä säännöllistä lauseketta pystyt poistamaan loppumerkit (_1
, _2
, _3
) päätteeksi. PHP:ssä on varmasti monia funktioita näille jutuille.
Kiitos. En mä tätä vättämättä tarvii..... teen yhtä ohjelmaa joka käsittelee käyttäjän lisäämiä arrayita. Tuli vaan mieleen että tuollaisenkin array voi joku tehdä. Mutta eihän tollanen toimi missään, ei kannata siihen kuluttaa aikaa.
pistemies kirjoitti:
Kiitos. En mä tätä vättämättä tarvii..... teen yhtä ohjelmaa joka käsittelee käyttäjän lisäämiä arrayita. Tuli vaan mieleen että tuollaisenkin array voi joku tehdä.
Ei voi, koska se ei ole mahdollista. PHP:n taulukko ei tue multi-inserttiä, eli yhdellä avaimella voi aina olla vain täsmälleen yksi arvo.
The Alchemist kirjoitti:
PHP:n taulukko ei tue multi-inserttiä, eli yhdellä avaimella voi aina olla vain täsmälleen yksi arvo.
Tulkki kuitenkin hyväksyy tuollaisen koodin. Arvoksi tulee aina viimeinen samalla avaimella määritelty arvo.
Petja kirjoitti:
Anna avaimille yksilöllinen tunniste jotenkin tyyliin:
text_1
,text_2
,text_3
Käytännöllisempää olisi vain käyttää sisäkkäisiä taulukoita.
PHP:n Array tuolla tavalla käytettynä onkin muiden kielien nimityksiä käyttäen Map (esim. Java) tai Dictionary (esim. C#) ja samalla myös se Array. Muissa kielissä yleensä Array:ssä on vain numeerinen indeksi.
Aihe on jo aika vanha, joten et voi enää vastata siihen.