Разделить массив на более мелкие массивы на основе значения ключа?

У меня есть результаты поиска mysql из поиска ключевых слов на моем сайте. Они сортируются по рангу членства (0-3). Тем не менее, мне нужно отображать ряды по-другому, так как ранг 3 получает более заметное форматирование, чем другие.

Я думал о разделении строк на отдельные массивы. Так как array0 будет содержать все строки с рангами 0 и т. Д. Затем проведите через эти массивы, чтобы отобразить результаты. У меня просто нет идеи, как это сделать – разделите массив на меньшие массивы.

(Для справки, я нашел этот вопрос: разбивая большой массив на меньшие массивы на основе имен ключей, но я не был уверен, что это то, что мне нужно … может быть, некоторые пояснения в этом вопросе помогут здесь?)

Например, вот мой массив:

Array ( [rank] => 3 [organization] => Test Company [imagecompany] => 1636.gif [website] => http://www.google.com [phone] => 344-433-3424 [fax] => [address_on_web] => physical [address] => 2342 Test Ave [city] => York [stateprov] => WA [postalcode] => 00000 [address_mailing] => 2342 Test Ave [city_mailing] => Seattle [state_mailing] => WA [zip_mailing] => 00000 [description] => 'Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test' [customerid] => 1636 ) 

Solutions Collecting From Web of "Разделить массив на более мелкие массивы на основе значения ключа?"

Вы можете использовать ранг в качестве ключа для создания многомерного массива следующим образом:

 $aRanks = array(); foreach($aArray as $aEntry) { $aRanks[$aEntry['rank']][] = $aEntry; } echo '<pre>'; print_r($aRanks); 

У меня есть результаты поиска mysql из поиска по ключевым словам

Затем сортируйте его, используя базу данных / SQL, а не PHP. Это быстрее и использует меньше кода.

 $query = mysql_query(); // your query here $result = mysql_fetch_array($query); foreach($result as $row){ switch($row['rank']){ case 3: // statement to apply formatting, add to each case // example: echo "<span style="color:red;">; break; case 2: break; case 1: break; } } 

Затем выводите каждую строку, закрывая echo </span> (или div или что-то еще), где вы хотите, чтобы форматирование заканчивалось