2016-09-14 7 views
0

Ich habe 2 ArraysFilter Array von einem anderen Array

  • ersten $ das ist mein Modell mein Ergebnis für die Bestellung und eine Liste der Tage der Woche, die (es ist ein Beispiel, ändert sich jede Woche)
  • $ zweite ist, dass eine Liste von 35 Tagen auf 5 Wochen (von Montag-1 bis sonntag-5) mit ID ein Name

as $ result i nedd ein Array wie $ zuerst bestellt, aber mit Daten von $ zweite (ID, post_title, post_name)

kann ich ein goot Ergebnis mit:

$posts = array_filter($second, function ($post) use ($first) { 
    return in_array($post->post_name, $first); 
}); 

aber das Problem $ posts wie $ zuerst bestellt wird nicht.

Dank

$FIRST 
Array 
(
    [0] => Monday-5 
    [1] => Tuesday-5 
    [2] => Wednsday-5 
    [3] => Thursday-1 
    [4] => Friday-1 
    [5] => Saturday-1 
    [6] => Sunday-1 
) 

$SECOND 
Array 
(
    [0] => WP_Post Object 
     (
      [ID] => 2878 
      [post_title] => Monday-1 
      [post_name] => monday-1 
     ) 

    [1] => WP_Post Object 
     (
      ID] => 2879 
      [post_title] => Tuesday-5 
      [post_name] => tuesday-5 
     ) 
    ... 

    [34] => WP_Post Object 
     (
      ID] => 2899 
      [post_title] => Sunday-5 
      [post_name] => sunday-5 
     ) 
) 
+1

Mögliches Duplikat von [Wert in Array finden und ID in PHP bekommen] (http://stackoverflow.com/questions/39250988/find-value-in-array-and-get-id-in-php) –

+0

Nicht genau, ich habe nicht das Ergebnis ist nicht gut bestellt – Pipoo

Antwort

0

Wenn ich Sie richtig verstehe Sie eine Ergebnismatrix enthält, zuerst alle Elemente mit [post_title] => Monday-5 dann alle [post_title] => Tuesday-5 und so weiter rechts, haben?

dann ein drittes leeres Array $result erstellen. Iterate über die $first und innerhalb dieser Iterate über die $second und kopieren Sie jemals Artikel von $second in $result Hexe erfüllen Ihre Bedingung $first[$i] == $second[$i]['post_title'].

$result = array(); 
foreach($first as $scope){ 
    foreach($second as $id=>$item){ 
    if($item->post_title == $scope){ 
     $result[$id] = $item; 
    } 
    } 
} 
+0

in diesem Fall mein erstes Element in $ Ergebnis wäre [ID] => 2978 [post_title] => Montag-5 [post_name] => Montag-5 Ich habe versucht, Sie Schleife, aber es stoppt PHP ... – Pipoo

+0

es scheint, das Problem ist mit $ Element, nicht wahr? – Pipoo

+0

versuche 'if ($ item-> post_title == $ scope) {' anstelle von 'if ($ item ['post_title'] == $ scope) {' – Marcus

Verwandte Themen