|
| 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!
| |
|
|