/ 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
gentagelse i array
Fra : zulup


Dato : 07-09-07 19:02

Hej, Er der nogle der ka hjælpe med det:

Hvordan reducerer jeg gentagelser i array ?

fx. jeg har $R og $T:
$R = array(a, a, b, a, a, c, b, c);
$T = array(2, 1, 5, 4, 3, 7, 6, 7);

jeg vil gerne omdanne dem til $nyR og $nyT:
$nyR = array(a, b, c);
$nyT = array(10, 11, 14);


på forhånd tak

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Michael Zedeler (07-09-2007)
Kommentar
Fra : Michael Zedeler


Dato : 07-09-07 19:17

zulup wrote:
> Hvordan reducerer jeg gentagelser i array ?
>
> fx. jeg har $R og $T:
> $R = array(a, a, b, a, a, c, b, c);
> $T = array(2, 1, 5, 4, 3, 7, 6, 7);
>
> jeg vil gerne omdanne dem til $nyR og $nyT:
> $nyR = array(a, b, c);
> $nyT = array(10, 11, 14);

Jeg tror egentlig at dette her kan gøre det:

$R = array_flip( array_flip( $R ) );

Ditto $T.

Mvh. Michael.

zulup (07-09-2007)
Kommentar
Fra : zulup


Dato : 07-09-07 19:34

Michael Zedeler wrote in
dk.edb.internet.webdesign.serverside.php:
> zulup wrote:
> > Hvordan reducerer jeg gentagelser i array ?
> >
> > fx. jeg har $R og $T:
> > $R = array(a, a, b, a, a, c, b, c);
> > $T = array(2, 1, 5, 4, 3, 7, 6, 7);
> >
> > jeg vil gerne omdanne dem til $nyR og $nyT:
> > $nyR = array(a, b, c);
> > $nyT = array(10, 11, 14);
>
> Jeg tror egentlig at dette her kan gøre det:
>
> $R = array_flip( array_flip( $R ) );
>
> Ditto $T.
>
> Mvh. Michael.

jeg fik desværre: Array ( [0] => a [1] => b ) ved at afprøve
array_flip. Den mistede også 'c' i $R.

Jeg spekulere om at man skal lave en eller anden form for
iteration for at finde gentagelser og gemme relevante keys i et
nyt array! Det kræver måske stor kode arbejde, som jeg ikke kan
rigtig overskue lige nu!

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Michael Zedeler (07-09-2007)
Kommentar
Fra : Michael Zedeler


Dato : 07-09-07 19:42

zulup wrote:
> Michael Zedeler wrote in
> dk.edb.internet.webdesign.serverside.php:
>> zulup wrote:
>>> Hvordan reducerer jeg gentagelser i array ?
>>>
>>> fx. jeg har $R og $T:
>>> $R = array(a, a, b, a, a, c, b, c);
>>> $T = array(2, 1, 5, 4, 3, 7, 6, 7);
>>>
>>> jeg vil gerne omdanne dem til $nyR og $nyT:
>>> $nyR = array(a, b, c);
>>> $nyT = array(10, 11, 14);
>>
>> Jeg tror egentlig at dette her kan gøre det:
>>
>> $R = array_flip( array_flip( $R ) );
>>
>> Ditto $T.
>
> jeg fik desværre: Array ( [0] => a [1] => b ) ved at afprøve
> array_flip. Den mistede også 'c' i $R.

Det kan ganske enkelt ikke lade sig gøre. Jeg har lige kørt et eksempel
med dine data og det virker fint:

<?php
$a = array(a, a, b, a, a, c, b, c);
print "Startværdi: " . implode(', ', $a ) . "\n";
print "Slutværdi: " . implode(', ', array_flip( array_flip( $a ) ) )
.. "\n";
?>

Startværdi: a, a, b, a, a, c, b, c
Slutværdi: a, b, c

Mvh. Michael.

Peter Brodersen (07-09-2007)
Kommentar
Fra : Peter Brodersen


Dato : 07-09-07 20:39

On Fri, 07 Sep 2007 20:42:14 +0200, Michael Zedeler
<michael@zedeler.dk> wrote:

>>>> $R = array(a, a, b, a, a, c, b, c);
>>>> $T = array(2, 1, 5, 4, 3, 7, 6, 7);
>
>>>> $nyR = array(a, b, c);
>>>> $nyT = array(10, 11, 14);

>Det kan ganske enkelt ikke lade sig gøre. Jeg har lige kørt et eksempel
>med dine data og det virker fint:

Jeg tror, pointen er, at værdierne i det ene array er knyttet til
tilsvare værdierne i det andet array.

Det er en temmelig uhensigtsmæssig datamodel, men pointen er vel
omtrent:

- summen af værdien af nøgle 0, 1, 3 og 4 (hvor alle a'erne er) er 10,
- summen af værdien af nøgle 2 og 6 (hvor alle b'erne er) er 11
- summen af værdien af nøgle 5 og 7 (hvor alle c'erne er) er 14

Følgende kan måske gøre det, men her ender a, b og c med at være
nøgler. Det må vel også være hensigtsmæssigt nok:

<?php
$R = array(a, a, b, a, a, c, b, c);
$T = array(2, 1, 5, 4, 3, 7, 6, 7);
$nyR = array();
foreach($R as $key => $value) {
   $nyR[$value]+=$T[$key];
}
// $nyR indeholder nu følgende værdi:
// array('a' => 10, 'b' => 11, 'c' => 14)

// bekræftelse:
var_dump($nyR);
?>

--
- Peter Brodersen
Kendt fra Internet

Søg
Reklame
Statistik
Spørgsmål : 177500
Tips : 31968
Nyheder : 719565
Indlæg : 6408509
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste