есть несколько диалогов пользователей, которые хранятся в массиве. PHP: $array = Array( [0]=> Array( "dialog_id" => "1", "dialog_info" => Array( Array("date_sent" => "01.09.2016", "msg" => "txt1"), Array("date_sent" => "31.08.2016", "msg" => "txt2"), Array("date_sent" => "02.09.2016", "msg" => "txt3") ) ), [1]=> Array( "dialog_id" => "2", "dialog_info" => Array( Array("date_sent" => "01.09.2018", "msg" => "txt4"), Array("date_sent" => "31.08.2018", "msg" => "txt5"), Array("date_sent" => "02.09.2018", "msg" => "txt6") ) ), // и тд................... ); как отсортировать по максимальной дате элементы массива [0], [1], [2] и тд. ?
@Drunkenmunky немного переделал код. так вроде пока работает PHP: //пересобрал массив $array = Array( [0]=> Array( Array("dialog_id" => "1" , "date_sent" => "01.09.2016", "msg" => "txt1"), Array("dialog_id" => "1" , "date_sent" => "31.08.2016", "msg" => "txt2"), Array("dialog_id" => "1" , "date_sent" => "02.09.2016", "msg" => "txt3") ), [1]=> Array( Array("dialog_id" => "2" , "date_sent" => "01.09.2018", "msg" => "txt4"), Array("dialog_id" => "2" , "date_sent" => "31.08.2018", "msg" => "txt5"), Array("dialog_id" => "2" , "date_sent" => "02.09.2018", "msg" => "txt6") ), // и тд................... ); //рабочая функция usort($array, function ( $a, $b ){ $array_a = array_column($a, "date_sent"); $array_b = array_column($b, "date_sent"); for ($j=0; $j < sizeof($array_a); $j++){ $array_a[$j] = strtotime($array_a[$j]); } for ($j=0; $j < sizeof($array_b); $j++){ $array_b[$j] = strtotime($array_b[$j]); } $date_a = max($array_a); $date_b = max($array_b); if ($date_a == $date_b ) { return 0; } return ($date_a > $date_b ) ? -1 : 1; } ); единственное, пришлось везде добавить "dialog_id". Возможно криво, но работает