PHP Multidimensionele array manipulatie

Gestart doorAntonn4 reacties94 weergaven

5 berichten · pagina 1 van 1

Antonn

Lid · Topicstarter

Berichten
8.649
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Hi,

Na een eeuw stel ik hier nog eens een vraag yummie
Ik heb een array (uit een database met leden) en ik wil een functie maken die voor elke kolom de lengte van de langste string kan weergeven als array. Even een leuk voorbeeldje:

$users = Array(0 => Array(gebruikersnaam => kort, skype => heelenormlang), 1 => Array(gebruikersnaam => antonn, skype => anton))

Zou moeten omgevormd worden tot dit:

$lengths = Array(gebruikersnaam => 6, skype => 13)

Wat heb ik al geprobeerd? Alles wat ik kon bedenken...
Dit is het beste wat ik tot nu toe heb:

// Allemaal $query database dingen
            $query->execute();
            $users = $query->fetchAll(PDO::FETCH_ASSOC);
            $colLengths = Array();
            for($cols = 0; $cols < count($users[0]); $cols++) {
                $colLengths[$cols] = 0;
                for($rows = 0; $rows < count($users); $rows++) {
                    if($colLengths[$cols] < strlen($users[$rows][$cols])) {
                        $colLengths[$cols] = min(strlen($users[$rows][$headercols[$cols]]), 50);
                        if($colLengths[$cols] == 50) {
                            break;
                        }
                    }
                }
            }


Dit zou volledig moeten werken, maar dat doet het niet omdat PDO een associatieve array geeft zonder indexes (Array(gebruikersnaam => antonn) ipv Array(0 => antonn)). Ik heb de associatieve array nodig en moet de functie dus werkende krijgen met de gewone strings ipv indexes.

Als iemand mijn functie volledig werkende krijgt of zelf een goede variant kan maken ben ik heel blij. Je kan me ook uitleggen hoe ik dit zelf kan oplossen maar dan moet je meer typen gok ik zo en ik snap het even goed als je de code geeft yummie.

Indien dit niet duidelijk genoeg uitgelegd was stel je maar een vraag en probeer ik het te verduidelijken.

Super enorm bedankt wink
0
Berichten
14.025
Reputatie
1
Punten
0,01
Lid sinds
Laatst gezien
Fetch_array al geprobeert?
0
Antonn

Lid · Topicstarter

Berichten
8.649
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Neen, het moet werken met een associatieve array.

toevoeging op 12 februari 2014, 14:40:40:
Al opgelost

$keys = array_keys($users[0]);
                $colLengths = array_map(strlen, $keys);
                foreach(array_map(array_values, $users) as $e) {
                    $colLengths = array_map(max, $colLengths, array_map(strlen, $e));
                }
0
Berichten
308
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Is al opgelost maar toch.
Als je met PDO numerieke indexes wil krijgen kan je PDO:aahETCH_BOTH (associative & numeric) of
FETCH_NUM die enkel numerieke indexes retourneerd smile
Verder kan je altijd for ($arr as $i => $val)-statement gebruiken om de onbekende index te achterhalen yummie
0
Antonn

Lid · Topicstarter

Berichten
8.649
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Robbeing schreef:
Is al opgelost maar toch.
Als je met PDO numerieke indexes wil krijgen kan je PDO:aahETCH_BOTH (associative & numeric) of
FETCH_NUM die enkel numerieke indexes retourneerd smile
Verder kan je altijd for ($arr as $i => $val)-statement gebruiken om de onbekende index te achterhalen yummie
Dat wist ik al maar ik had de assoc nodig voor iets anders en wou het niet overbodig 2 keer uit de database halen.
0

Jouw reactie

Deel je idee, stel een vraag of help een ander verder.

Editor laden…

Praat mee met de One2xs-community.

Inloggen om te reageren