/ 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
Efterlysning af Array functions
Fra : Frowning Freezer


Dato : 09-06-05 20:23

Jeg har 2 operationer som jeg godt kunne tænke mig at udføre på
"to-dimensionelle" arrays, altså arrays hvor hver værdi er et subarray
med associative keys - svarende til en database tabel nærmest.

For det første vil jeg gerne kunne søge i arrayet om der findes en
"post" hvor en bestemt key har en bestemt værdi.

For det andet vil jeg gerne kunne trække en bestemt key ud af hver
"post" og lægge disse værdier i et "almindeligt" array (keys er nu
ligegyldigt).

Det er jo lidt SQL agtigt, men SQL duer jo bare ikke her! :)

Jeg kan ikke rigtig gennemskue alle array functions i PHP manualen, så
er der nogen her der kan fortælle mig der allerede findes funktioner
til disse 2 operationer indbygget i PHP eller om man bare selv må lave
dem?

PS. Ja jeg ved godt at disse metoder absolut ikke skal erstatte et SQL
udtræk, men nogle gange er det mindre datamængder som ikke lige præcis
er database data, som man sidder og junglerer med.


 
 
Johan Holst Nielsen (09-06-2005)
Kommentar
Fra : Johan Holst Nielsen


Dato : 09-06-05 22:14

Frowning Freezer wrote:
> Jeg har 2 operationer som jeg godt kunne tænke mig at udføre på
> "to-dimensionelle" arrays, altså arrays hvor hver værdi er et subarray
> med associative keys - svarende til en database tabel nærmest.
>
> For det første vil jeg gerne kunne søge i arrayet om der findes en
> "post" hvor en bestemt key har en bestemt værdi.

http://dk2.php.net/array_search
Tjek kommentarerne - der er en der har skrevet en funktion til søgning i
multi-dimensionelle arrays.

> For det andet vil jeg gerne kunne trække en bestemt key ud af hver
> "post" og lægge disse værdier i et "almindeligt" array (keys er nu
> ligegyldigt).

Hmm forstår ikke denne... forstiller mig et array som dette.

$arrayDB = array();
$arrayDB['animals'] = array('kæledyr'=>'hund','ækel'=>'edderkop');
$arrayDB['mad'] = array('sundt'=>'mælk','usundt'=>'chokolade med kokos');

Så kan du reelt blot skrive

$nytArray = array();
$nytArray = $arrayDB['mad'];
var_dump($nytArray);

?? Eller misforstår jeg noget?

mvh
Johan

Frowning Freezer (10-06-2005)
Kommentar
Fra : Frowning Freezer


Dato : 10-06-05 17:20

>> For det andet vil jeg gerne kunne trække en bestemt key ud af hver
>> "post" og lægge disse værdier i et "almindeligt" array (keys er nu
>> ligegyldigt).
>
>Hmm forstår ikke denne... forstiller mig et array som dette.
>
>$arrayDB = array();
>$arrayDB['animals'] = array('kæledyr'=>'hund','ækel'=>'edderkop');
>$arrayDB['mad'] = array('sundt'=>'mælk','usundt'=>'chokolade med kokos');
>
>Så kan du reelt blot skrive
>
>$nytArray = array();
>$nytArray = $arrayDB['mad'];
>var_dump($nytArray);
>
>?? Eller misforstår jeg noget?

Ja det tror jeg. Det jeg ønsker er at ud fra dette:

$arr = array();
$arr[] = array('name' => 'Allan', 'addr' => 'Yhyyklff', 'phone' =>
'1234');
$arr[] = array('name' => 'Kenny', 'addr' => 'Jfjjfjlf', 'phone' =>
'4545');
$arr[] = array('name' => 'Andre', 'addr' => 'Hjgfhkjg', 'phone' =>
'4242');
$arr[] = array('name' => 'Ivano', 'addr' => 'Xdjfkjdf', 'phone' =>
'0707');

....hvor jeg ønsker alle 'phone' værdier får jeg dette:

$result = array('1234', '4545', '4242', '0707')

Men altså det er vel bare at loope igennem array'et og trække dem ud.
Tænkte bare om der var en mere effektiv måde at gøre det på...


Jacob Atzen (09-06-2005)
Kommentar
Fra : Jacob Atzen


Dato : 09-06-05 22:28

On 2005-06-09, Frowning Freezer <pub1@hverdag.dk> wrote:
> Jeg har 2 operationer som jeg godt kunne tænke mig at udføre på
> "to-dimensionelle" arrays, altså arrays hvor hver værdi er et subarray
> med associative keys - svarende til en database tabel nærmest.
>
> For det første vil jeg gerne kunne søge i arrayet om der findes en
> "post" hvor en bestemt key har en bestemt værdi.

Jeg er ikke sikker på, du gerne vil det du beder om, men her er en
funktion, der gør det:

function ArrayTwoDimKeyExists($array, $key) {
$result = false;
foreach($array as $subArray) {
$result = array_key_exists($key, $subArray) || $result;
}
return $result;
}

> For det andet vil jeg gerne kunne trække en bestemt key ud af hver
> "post" og lægge disse værdier i et "almindeligt" array (keys er nu
> ligegyldigt).

Jeg går ud fra du mener, at der i hvert del array er en indgang med nøgle $key
og du gerne vil have samlet alle disse indgange i et nyt array.

function ArrayFetchEntries($array, $key) {
$result = array();
foreach($array as $subArray) {
$result[] = $subArray[$key];
}
return $result;
}

Bemærk, at funktionen forudsætter, at der virkelig er en indgang med nøglen
$key i hvert enkelt del array, hvis ikke vil den givetvis ikke virke efter
hensigten - og som minimum generere en bunke notices.

--
Med venlig hilsen
- Jacob Atzen

Kim Schulz (10-06-2005)
Kommentar
Fra : Kim Schulz


Dato : 10-06-05 19:49

[snip]
>
> $result = array('1234', '4545', '4242', '0707')
>
> Men altså det er vel bare at loope igennem array'et og trække dem ud.
> Tænkte bare om der var en mere effektiv måde at gøre det på...

$arr["phone"] giver dig den værdi som er forbundet med phone keyen i
arrayet

--
Kim Schulz | Need a Content Management System for your website? Go
Geek by nature | get Fundanemt at : http://www.fundanemt.com New
schulz.dk | version out now!

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

Månedens bedste
Årets bedste
Sidste års bedste