2017-04-03 4 views
0

Ich möchte 4 Arrays, die innerhalb 1 Array eingeschlossen sind, sortieren, aber ich habe keine Ahnung, wie es geht.Laravel wie multidimensionales Array zu sortieren

Die Sache ist, dass ich sie nach Datum sortieren möchte, aber nicht Datenintegrität mit anderen Arrays verlieren.

Wie soll ich das tun?

+1

http://stackoverflow.com/questions/2910611/php-sort-a-multidimensional-array- by-element-containing-date –

+0

Versuchen Sie 'ksort' lesen Sie mehr [hier] (http://php.net/manual/en/function.ksort.php) –

+1

' array_multisort ($ date, $ poster, $ character, $ Titel); ' –

Antwort

0

Versuchen Sie, diese

<?php 
$date = ['2014-04-03', '2013-04-03', '2015-04-03', '2017-04-03', '2013-09-03']; 
$title = ['title1', 'title2', 'title4', 'title5', 'title6']; 
$character = ['character2', 'character5', 'character1', 'character8', 'character0']; 
$poster = ['poster4', 'poster1', 'poster7', 'poster9', 'poster0']; 

$personArray = [ 
    'date' => $date, 
    'title' => $title, 
    'character' => $character, 
    'poster' => $poster 
]; 

/*echo "<pre>"; 
print_r($personArray);*/ 

$length_count = count($date); 

$new_array = array(); 
for($i=0; $i<$length_count ; $i++){ 
$new_array[$i] = array(); 
    foreach($personArray as $key => $value){ 
     $new_array[$i][$key] = $personArray[$key][$i]; 
    } 
} 

function date_compare($a, $b){ 
    $t1 = strtotime($a['date']); 
    $t2 = strtotime($b['date']); 
    return $t1 - $t2; 
}  
usort($new_array, 'date_compare'); 

//print_r($new_array); 
$sorted_array = array(); 
$sorted_array['date'] = array(); 
$sorted_array['title'] = array(); 
$sorted_array['character'] = array(); 
$sorted_array['poster'] = array(); 
foreach($new_array as $data){ 
    array_push($sorted_array['date'], $data['date']); 
    array_push($sorted_array['title'], $data['title']); 
    array_push($sorted_array['character'], $data['character']); 
    array_push($sorted_array['poster'], $data['poster']); 
} 
//print_r($sorted_array); 

?> 
0

Sie können auch mit den Laravel Helfer array_sort() und array_sort_recursive() rumspielen. Innerhalb der Closure legen Sie fest, ob das Element im übergeordneten Array also is an array ist und sortieren Sie auch das innere Array.

https://laravel.com/docs/5.4/helpers

0

Danke Jungs für die Hilfe konnte ich einfach, dass ganz tun:

$movieArray = []; 
    foreach($person->getMovieCredits()->getCast() as $movie) 
    { 
     array_push($movieArray, ['date' => $movie->getReleaseDate()->format('Y'), 'poster' => $movie->getPosterPath(), 
      'character' => $movie->getCharacter(), 'title' => $movie->getTitle()]); 
    } 

    asort($movieArray); 
Verwandte Themen