in_array mehrdimensional

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • in_array mehrdimensional

    in_array durchsucht ja nur Arrays mit einer Dimension.
    Ich bräuchte das so das der Key zurückgeliefert wird
    von dem Array in dem der Wert gefunden wurde bei mehrdimensionalen Arrays.
    Mometan sieht es bei mir so aus und liefert mir das gefundene Ergebnis:

    Quellcode

    1. function array_deep($value, $array) {
    2. foreach($array as $item => $avalue) {
    3. if(is_array($value)) {
    4. $return = array_deep($value, $avalue);
    5. } else {
    6. $return = ( strtolower($avalue) == strtolower($value)) ? $avalue : '';
    7. }
    8. if ($return) {
    9. return $return;
    10. }
    11. }
    12. return false;
    13. }
    Alles anzeigen
  • Dein Fehler ist, dass du das Ergebnis immer überschreibst!

    Hier mal eine Version von mir:

    Quellcode

    1. function deep_in_array(&$array, $search, $dimension = false){
    2. $dim = 0;
    3. $arrs[] = array($array, $dim);
    4. $result = false;
    5. for($i = 0; isset($arrs[$i]), is_array($arrs[$i][0]); ++$i){
    6. foreach($arrs[$i][0] as $value){
    7. if($value == $search && !$result){
    8. $result = $value;
    9. }
    10. $dim = $arrs[$i][1]+1;
    11. if(is_array($value)){
    12. $arrs[] = array($value, $dim);
    13. }
    14. }
    15. }
    16. if($dimension){
    17. return array($result, $dim);
    18. }
    19. else{
    20. return $result;
    21. }
    22. }
    Alles anzeigen


    Man könnte den Code noch in dem Sinne verbessern, dass man ihn abbrechen lässt, sobald er erfolgreich einen Wert gefunden hat. Allerdings zählt die Funktion momentan auch gleich noch die Dimension des Arrays 8)