php durchläuft mehrere Arrays [duplicate]

Lesezeit: 3 Minuten

Benutzer-Avatar
jkdba

okay, also habe ich zwei Arrays

$array_one([a]=>2,[b]=>1,[c]=>1);
$array_two([a]=>1,[b]=>2,[c]=>1);

Ich möchte in der Lage sein, beide Arrays gleichzeitig zu durchlaufen, damit ich einfache Vergleiche anstellen kann. Ich habe mir die Verwendung einer foreach-Schleife angesehen, aber ich kann die Informationen nur jeweils ein Array verarbeiten. Ich habe mir auch das Zusammenführen der Arrays angesehen, aber ich sehe keinen Nutzen darin, da ich sowohl die Schlüssel als auch die Werte benötige, um die Vergleiche durchzuführen. hat jemand eine Lösung für dieses Problem? Ich schätze Ihre Zeit im Voraus.

Um auf die Vergleiche genau zu sein, möchte ich etwas in diesem Umfang

if ($keyone == $keytwo && $valuetwo <= $valueone)
{
   print_r ($array_two);
}

Wäre es möglich, die Rekursion zur Schleife zu verwenden, anstatt eine iterative Schleife zu verwenden?

  • Wie möchten Sie diesen Vergleich verwenden?

    – Fröhlich

    7. Februar 2012 um 5:49 Uhr

$array_one = array (
    'a' => 2,
    'b' => 1,
    'c' => 1
);
$array_two = array (
    'a' => 1,
    'b' => 2,
    'c' => 1
);


$iterator = new MultipleIterator ();
$iterator->attachIterator (new ArrayIterator ($array_one));
$iterator->attachIterator (new ArrayIterator ($array_two));

foreach ($iterator as $item)
{
    if ($item [0] > $item [1])
    {
        ...
    }
}

Es ist wirklich ein bisschen überflüssig, aber ich sehe eine gewisse Schönheit darin.

  • das … ist einfach schön …

    – Top-Fragen

    5. Juli 2014 um 8:57 Uhr

  • Ich mag die Leistungsfähigkeit von SPL-Iteratoren sehr. Dies wird in der funktionalen Programmierung ‘zip’ genannt. Ich hoffe auf noch mehr tolle Iteratoren und Dienstprogramme in der Zukunft von PHP.

    – xPheRe

    13. August 2014 um 14:48 Uhr

  • Ich liebe die Code-Porno-Facette davon.

    – Niels Keurentjes

    23. März 2016 um 23:52 Uhr

Benutzer-Avatar
mathematischer.kaffee

Wenn sie die gleichen Schlüssel haben, können Sie einfach die Schlüssel durchlaufen und sie verwenden, um die Arrays zu indizieren array_keys:

foreach(array_keys($array_one) as $key) {
    // do something with $array_one[$key] and $array_two[$key]
}

Wenn Sie sich Sorgen machen, dass einige Schlüssel nicht vorhanden sind, können Sie versuchen (z. B.) array_key_exists($key,$array_two).

  • Sollte foreach sein, nicht for.

    – Beta-Projekte

    12. Januar 2015 um 2:35 Uhr

$array_one = array('a'=>2,'b'=>1,'c'=>1); 
$array_two = array('a'=>1,'b'=>2,'c'=>1);
$keys = array_keys($array_one);
for($x=0;$x<sizeof($array_one);$x++){
    if($array_one[$keys[$x]] == $array_two[$keys[$x]]) { 
        echo "equal key:".$keys[$x]."\n";
    }
}

Ausgang:
gleicher Schlüssel:c

andere ist besser lol.

Benutzer-Avatar
Ibrahim Azhar Armar

Das geht ganz einfach mit foreach.

$array_one([a]=>2,[b]=>1,[c]=>1);
$array_two([a]=>1,[b]=>2,[c]=>1);

foreach($array_one as $array_one_key => $array_one_value) {
    foreach($array_two as $array_two_key => $array_two_value) {
        if ($array_one_key == $array_two_key && $array_two_value <= $array_one_value) {
            print_r ($array_two);
        }
    }
}

Ich habe mir die Verwendung einer foreach-Schleife angesehen, aber ich kann die Informationen nur jeweils ein Array verarbeiten.

Wenn die Schlüssel in beiden Arrays gleich sind, können Sie foreach() verwenden:

foreach($array_one as $key => $value)
{
  // do something to the first array
  $array_one[$key] = doSomething($value);

  // do something else to the second array
  $array_two[$key] = doSomethingElse($array_two[$key]);
}

Benutzer-Avatar
MJW

/* Make sure the array pointer is in the first position. */
reset($leftarray);
reset($rightarray);

/* Loop through the arrays. */
$i=0;
while ($i < $totalitems)
   {echo current($leftarray)."<br>".
         current($rightarray)."<br>"; 
    next($leftarray);
    next($rightarray);                                                     
    $i=$i+1;
   }

Benutzer-Avatar
Ahmed Abumostafa

<?php
foreach($array_one as $k => $v)
{
  $result = $v . $array_two[$k];
}
?>

1018480cookie-checkphp durchläuft mehrere Arrays [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy