/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
to-dimensionelt array
Fra : Leonard


Dato : 23-02-06 15:22

Jeg har et array:

$list[$n]['navn']
$list[$n]['medlemsnr']
$list[$n]['adresse']
$list[$n]['postby']
$list[$n]['tlf']
$list[$n]['mail']

og så har jeg brug for at tjekke om $nr er et medlemsnr og forsøgte
derfor med in_array($nr, $list), men det virker ikke ... ?

--
Leonard
http:/leonard.dk/hjemmeside/

 
 
Johan Holst Nielsen (23-02-2006)
Kommentar
Fra : Johan Holst Nielsen


Dato : 23-02-06 15:26

Leonard wrote:
> Jeg har et array:
>
> $list[$n]['navn']
> $list[$n]['medlemsnr']
> $list[$n]['adresse']
> $list[$n]['postby']
> $list[$n]['tlf']
> $list[$n]['mail']
>
> og så har jeg brug for at tjekke om $nr er et medlemsnr og forsøgte
> derfor med in_array($nr, $list), men det virker ikke ... ?

if(is_array($list[$nr])) {
echo "Yep - det findes skam :)";
}

mvh
Johan

Leonard (23-02-2006)
Kommentar
Fra : Leonard


Dato : 23-02-06 15:38

Johan Holst Nielsen <spam@phpgeek.dk> wrote:

>Leonard wrote:
>> Jeg har et array:
>>
>> $list[$n]['navn']
>> $list[$n]['medlemsnr']
>> $list[$n]['adresse']
>> $list[$n]['postby']
>> $list[$n]['tlf']
>> $list[$n]['mail']
>>
>> og så har jeg brug for at tjekke om $nr er et medlemsnr og forsøgte
>> derfor med in_array($nr, $list), men det virker ikke ... ?
>
>if(is_array($list[$nr])) {
> echo "Yep - det findes skam :)";
>}

Næh, så har jeg ikke udtrykt mig klart nok.

$nr er måske et medlemsnr og jeg skal tjekke om det findes i
$list[]['medlemsnr']

Det du tjekker er om $list[$nr] er et array og det duer ikke, da
$list[] typisk går fra 0-200, mens $nr er en tekststreng med 6 cifre
(foranstillede nuller), så det vil aldrig passe sammen.

--
Leonard
http:/leonard.dk/hjemmeside/

Kasper (23-02-2006)
Kommentar
Fra : Kasper


Dato : 23-02-06 15:56

Leonard skrev:
> $nr er måske et medlemsnr og jeg skal tjekke om det findes i
> $list[][\'medlemsnr\']

Ud fra det fortalte, er det bedste som jeg kan komme frem til:

<?
foreach($list AS $medlem_array){
if ($medlem_array[\'medlemsnr\'] == $tha_number){
echo \"Fundet\";
break;
}
}
?>


Håber du kan bruge det til noget, ellers må du (igen) til at uddybe dig lidt mere :)

--
Med venlig hilsen
Kasper Johansen

Johan Holst Nielsen (23-02-2006)
Kommentar
Fra : Johan Holst Nielsen


Dato : 23-02-06 16:05

Kasper wrote:
> Leonard skrev:
>
>>$nr er måske et medlemsnr og jeg skal tjekke om det findes i
>>$list[][\'medlemsnr\']
>
>
> Ud fra det fortalte, er det bedste som jeg kan komme frem til:
>
> <?
> foreach($list AS $medlem_array){
> if ($medlem_array[\'medlemsnr\'] == $tha_number){
> echo \"Fundet\";
> break;
> }
> }
> ?>

En anden mulighed - hvis det f.eks. også var navn osv man gik efter -
kunne være følgende:

<?php
$foo[0]['medlemsnummer'] = '123';
$foo[0]['navn'] = 'john doe';
$foo[1]['medlemsnummer'] = '456';
$foo[1]['navn'] = 'jane doe';

foreach($foo as $r=>$bar) {
$found = array_search('456',$bar);
if($found) {
echo "Fundet i ".$r." og er ".$found;
}
}
?>

Vil returnere "Fundet i 1 og er medlemsnummer"

Men det er igen lidt andet på hvad det skal bruges til :) Alternativt
kunne bruges array_flip med en sammenligning...

mvh
Johan

Leonard (23-02-2006)
Kommentar
Fra : Leonard


Dato : 23-02-06 16:06

Kasper <kasper@johansen.tdcadsl.dk> wrote:

>Ud fra det fortalte, er det bedste som jeg kan komme frem til:

Fint, det virker.
Jeg undres stadig over at alle de fine array-funktioner ikke virker så
godt på fler-dimensionelle arrays, men sådan skal det åbenbart være.

--
Leonard
http:/leonard.dk/hjemmeside/

Mads Lie Jensen (23-02-2006)
Kommentar
Fra : Mads Lie Jensen


Dato : 23-02-06 16:25

On Thu, 23 Feb 2006 15:21:35 +0100, Leonard <usenet@leonard.dk> wrote:

>Jeg har et array:
>
>$list[$n]['navn']
>$list[$n]['medlemsnr']
>$list[$n]['adresse']
>$list[$n]['postby']
>$list[$n]['tlf']
>$list[$n]['mail']
>
>og så har jeg brug for at tjekke om $nr er et medlemsnr og forsøgte
>derfor med in_array($nr, $list), men det virker ikke ... ?

Hvor har du $list fra?

Det er en mulighed at bruge medlemsnummeret som key i $list (så $n i dit
eksempel vil være medlemsnummeret).
Så kan du hurtigt se om medlemsnummeret findes vha. in_array().

--
Mads Lie Jensen - mads@gartneriet.dk - ICQ #25478403

Gartneriet - nu ny indpakning (delvist i hvert fald): http://www.gartneriet.dk/

Leonard (23-02-2006)
Kommentar
Fra : Leonard


Dato : 23-02-06 17:23

Mads Lie Jensen <mads@gartneriet.dk> wrote:

>Hvor har du $list fra?

Den laver ejg selv. Det er en samling af forskellige udtræk fra 3-4
tabeller, da datastrukturen mildest talt er uhensigtsmæssig, men
udenfor min rækkevidde at lave om på.

>Det er en mulighed at bruge medlemsnummeret som key i $list (så $n i dit
>eksempel vil være medlemsnummeret).
>Så kan du hurtigt se om medlemsnummeret findes vha. in_array().

Øh, slet ikke fattet

--
Leonard
http:/leonard.dk/hjemmeside/

Mads Lie Jensen (23-02-2006)
Kommentar
Fra : Mads Lie Jensen


Dato : 23-02-06 18:28

On Thu, 23 Feb 2006 17:23:15 +0100, Leonard <usenet@leonard.dk> wrote:

>>Hvor har du $list fra?
>
>Den laver ejg selv. Det er en samling af forskellige udtræk fra 3-4
>tabeller, da datastrukturen mildest talt er uhensigtsmæssig, men
>udenfor min rækkevidde at lave om på.

Så kan du heldigvis bygge $list anderledes

>>Det er en mulighed at bruge medlemsnummeret som key i $list (så $n i dit
>>eksempel vil være medlemsnummeret).
>>Så kan du hurtigt se om medlemsnummeret findes vha. in_array().
>
>Øh, slet ikke fattet

Jeg skal prøve at forklare ...

Som jeg læser dit eksempel er $n et fortløbende nummer - det behøver det
ikke at være.

Byg din $list som:
$list[$medlemsnummer]['navn'] = medlemmets navn
$list[$medlemsnummer]'adresse'] = adressen
osv ...

Så risikerer du godt nok at $medlemsnummer ikke er fortløbende og du så
ikke kan løbe $list igennem med et almindeligt for-loop længere. Men så
bruger du bare foreach i stedet.

Nu er medlemsnummeret key i din $list - og for at se om et givent
medlemsnummer findes kan noget så simpelt som:

isset($list[$medlemsnummer]) nu bruges.

--
Mads Lie Jensen - mads@gartneriet.dk - ICQ #25478403

Gartneriet - nu ny indpakning (delvist i hvert fald): http://www.gartneriet.dk/

Leonard (23-02-2006)
Kommentar
Fra : Leonard


Dato : 23-02-06 18:32

Mads Lie Jensen <mads@gartneriet.dk> wrote:

>Byg din $list som:
>$list[$medlemsnummer]['navn'] = medlemmets navn

Duer ikke, da det samme medlemsnummer kan forekomme flere gange i
listen.
Lige i dette tilfælde vil jeg bare tjekke om det allerede er der, men
det er ikke altid at det kun er der en gang.

--
Leonard
http:/leonard.dk/hjemmeside/

Mads Lie Jensen (23-02-2006)
Kommentar
Fra : Mads Lie Jensen


Dato : 23-02-06 21:05

On Thu, 23 Feb 2006 18:31:49 +0100, Leonard <usenet@leonard.dk> wrote:

>Mads Lie Jensen <mads@gartneriet.dk> wrote:
>
>>Byg din $list som:
>>$list[$medlemsnummer]['navn'] = medlemmets navn
>
>Duer ikke, da det samme medlemsnummer kan forekomme flere gange i
>listen.
>Lige i dette tilfælde vil jeg bare tjekke om det allerede er der, men
>det er ikke altid at det kun er der en gang.

Hvis samme medlemsnummer kan forekomme flere gange, så er det vel altid
på det samme medlem?

"min" metode er kun et problem hvis flere forskellige medlemmer kan have
samme medlemsnummer. Men i så fald vi jeg påstå du har langt større
problemer med dine data

Den eneste forskel mellem min metode og din nuværende, er at bruge
$list[$medlemsnummer] i stedet for $list[$n] - der er jo ikke noget i
vejen for fortsat at have $list[$medlemsnummer]['medlemsnummer']

--
Mads Lie Jensen - mads@gartneriet.dk - ICQ #25478403

Gartneriet - nu ny indpakning (delvist i hvert fald): http://www.gartneriet.dk/

Leonard (23-02-2006)
Kommentar
Fra : Leonard


Dato : 23-02-06 21:26

Mads Lie Jensen <mads@gartneriet.dk> wrote:

>"min" metode er kun et problem hvis flere forskellige medlemmer kan have
>samme medlemsnummer. Men i så fald vi jeg påstå du har langt større
>problemer med dine data

Jo, der kan være flere medlemmer på det samme medlemsnummer,
og som jeg skrev:

>>>da datastrukturen mildest talt er uhensigtsmæssig, men
>>>udenfor min rækkevidde at lave om på.

Men Kaspers løsning virker fint og da det er i et
administrationsinterface er hastigheden ikke så vigtig, det vil ikke
blive brugt hver dag.

Men jeg har da også lært lidt af dit forslag, det kan jeg måske få
brug for senere i livet


--
Leonard
http:/leonard.dk/hjemmeside/

Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408938
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste