2016-05-31 5 views
0

I foreach Schleife verwende, die ein Array gibtZähle die Anzahl der Einladungen zum Abendessen, die in Reihe sind

$dinnerDetails = array(); 
$lastDinnerDate = ''; 
$newDate = ''; 
foreach ($invitations as $invitation) { 
    $lastDinnerDate = $invitation['dinner_date']; 
    if ($invitation['dinner_date'] > $lastDinnerDate) { 
     $newDate = 'yes'; 

    } else { 
     $newDate = 'no'; 
    } 

    $dinnerDetails[] = array(
     'request_id' => $invitation['request_id'], 
     'dinner_date' => $invitation['dinner_date'], 
     'dinner_id' => $invitation['dinner_id'], 
     'new_dinner' => $newDate 
    ); 
} 

Ausgabe wie folgt

array:4 [▼ 
    0 => array:3 [▼ 
    "request_id" => "48" 
    "dinner_id" => "36" 
    "dinner_date" => "2016-05-16T10:00:00" 
    "new_date" => "yes" 
    ] 
    1 => array:3 [▼ 
    "request_id" => "51" 
    "dinner_id" => "40" 
    "dinner_date" => "2016-05-16T10:00:00" 
    "new_date" => "no" 
    ] 
    2 => array:3 [▼ 
    "request_id" => "50" 
    "dinner_id" => "36" 
    "dinner_date" => "2016-05-27T10:00:00" 
    "new_date" => "yes" 
    ] 
    3 => array:3 [▼ 
    "request_id" => "52" 
    "dinner_id" => "41" 
    "dinner_date" => "2016-05-27T10:00:00" 
    "new_date" => "no" 
    ] 
] 

Meine Frage ist, sieht, wie ich die Anzahl der zählen kann mal die dinner_id erschien. Ich möchte diesen Wert als Teil des Arrays übergeben, da $dinnerDetails an die Ansicht übergeben wird, so dass es einfacher wird, die Anzahl anzuzeigen. Die Ansicht zeigt bereits die Daten über foreach Schleife seine nur die Zählung ich brauche für jeden dinner_id

+0

aussehen wird. so 'count (array_column ($ arr, 'dinner_id'))' –

+0

nein, es kann dynamisch ändern, es ist nicht behoben – Saadia

+0

siehe aktualisierten Kommentar –

Antwort

1

Ich nehme an, Sie die IDs zählen möchten und nicht das Etikett/Name selbst, nie jemand so einfach, wie es wie so tun würde, legen Sie einfach dieses innerhalb Ihrer foreach Schleife

$countDinner[$invitation['dinner_id']] = isset($countDinner[$invitation['dinner_id']]) ? $countDinner[$invitation['dinner_id']] + 1 : 1; 

One coud auch anstelle eines ternären Operator eine if-Klausel verwenden, wenn man preffers, vergessen Sie nicht,

$countDinner = array(); 

Bevor die 012 zu platzierenSchleife, um das Array zu initialisieren, sollten Sie jetzt ein Array mit der Anzahl der einzelnen dinner_id haben.

Um es auf den vorhandenen Array fügen Sie einfach eine Schleife durch, wie folgend:

foreach($dinnerDetails as &$dinnerDetail){ 
    $dinnerDetail['count'] = $countDinner[$dinnerDetail['dinner_id']]; 
} 

und das Endergebnis wie dies dies das gleiche Ihrer Array-Größe ist

0 => array:3 [▼ 
    "request_id" => "48" 
    "dinner_id" => "36" 
    "dinner_date" => "2016-05-16T10:00:00" 
    "new_date" => "yes" 
    "count" => 2 
    ] 
+0

Danke, ich überprüfe es – Saadia

+0

Do not I fixed a missing bracket @ Saadia :) – Epodax

+0

das funktioniert, aber können wir nicht diesen Teil des Arrays, der bereits gesendet wird, um anzuzeigen, indem Sie einen anderen Schlüssel hinzufügen? Es wird das Leben viel einfacher machen. – Saadia

Verwandte Themen