Ik heb een volgende array:

$programs=[
    'user1'=>[
        'value 1',
        'value 2',
    ],
    'user2'=>[
        'value 3',
    ],
    'user3'=>[
        'value 4',
    ],
];


Hierin wil ik graag weten welke "user" er bij welk "value" hoort. M.a.w. voor "value 3" wil ik "user2" terug krijgen. Het volgende werkt alleen wanneer ik een associatieve array zou gebruiken:

$key=array_search('value 3', array_column($programs, 0));


Kan dit zonder iedere keer de array door te lopen?
Als je ergens in je code 1 keer dit doet, nadat de $programs array aangemaakt is:


<?php
$programs = [
    'user1' => [
        'value 1',
        'value 2',
    ],
    'user2' => [
        'value 3',
    ],
    'user3' => [
        'value 4',
    ],
];

$hashmap = [];

foreach ($programs as $user => $values) {
    foreach ($values as $value) {
        $hashmap[$value] = $user;
    }
}

echo '<pre>';
print_r($hashmap);
echo '</pre>';
?>


dan kun je daarna gewoon dit doen:


<?php
echo '<pre>';
print_r($hashmap['value 1']);
echo '</pre>';
?>


n.b. dit gaat ervan uit dat elke value uniek is
Graag gedaan hoor, don't mention it ;-)

Reageren