Multidimensionales Array in ein eindimensionales konvertieren

lerel

Grünschnabel
Hallo,

ich habe ein problem und zwar habe ich mir gerade eine Navigation geschrieben, die man bis ins unendliche von der Tiefe her erweitern kann, damit das ganze Aus- und Einklappbar ist, habe ich mir so überlegt, das ich mir ein Array schreibe, dass von der letzten Ebene rekursiv aus überprüft ob die Elemente alle enthalten sind -> Überprüfung via in_array()

Für das in_array() brauche ich ein eindimensionales Array, allerdings bekomme ich über meine Rekursion gewzungenermaßen ein mehrdimensionales Array, Problem ist jetzt, wie kriege ich es hin das das mehrdimensionale zu einem eindimensionalen wird?!

Das ist der print_r() des mehrdimensionalen Arrays:

PHP:
Array
(
    [0] => 17
    [1] => Array
        (
            [0] => 16
            [1] => Array
                (
                    [0] => 15
                    [1] => Array
                        (
                            [0] => 12
                        )

                )

        )

)

Ich dank euch jetz schon und hoffe das ihr mir helfen könnt :)
 
PHP:
<?php
function in_multi_array($needle, $haystack)
{
    $in_multi_array = false;
    if(in_array($needle, $haystack))
    {
        $in_multi_array = true;
    }
    else
    {   
        for($i = 0; $i < sizeof($haystack); $i++)
        {
            if(is_array($haystack[$i]))
            {
                if(in_multi_array($needle, $haystack[$i]))
                {
                    $in_multi_array = true;
                    break;
                }
            }
        }
    }
    return $in_multi_array;
}
?>

in_array() Kommentar #20594
 
Haha geil, stand ich gerade auf dem Schlauch, die Funktion hat ich sogar schon im Script mit drinnen :D

Ich dank dir!
 
Verstehe ich nicht. Du arbeitest mit Rekursion und willst trotzdem ohne Rekursion arbeiten? Das prüfen bietet sich dann doch an:

PHP:
function array_search_recursive($needle, $haystack)
{
  foreach ($haystack as $a)
  {
    if (is_array($a))
    {
      return array_search_recursive($neelde, $a);
    }
    else if ($needle == $a)
    {
      return true;
    }
  }
  return false;
}

Hoffe das funktioniert.
 
Zuletzt bearbeitet:
Zurück