|
|
|
| Добрый вечер! Есть многомерный массив, можно ли как нибудь отсортировать его к примеру по ветке post_title
на сколько я понял нужно использовать usort, но не могу понять какую функцию нужно написать для данной задачи...
пример массива:
Array
(
[2715] => stdClass Object
(
[ID] => 2715
[post_author] => 1
[post_date] => 2011-10-07 15:35:02
[post_date_gmt] => 2011-10-07 10:35:02
[post_content] =>
[post_title] => DSC_3317
[post_excerpt] =>
[post_status] => inherit
[comment_status] => open
[ping_status] => closed
[post_password] =>
[post_name] => DSC_3317
[to_ping] =>
[pinged] =>
[post_modified] => 2011-10-07 15:35:02
[post_modified_gmt] => 2011-10-07 10:35:02
[post_content_filtered] =>
[post_parent] => 2714
[guid] => http://www.url.ru/wp-content/uploads/2011/10/DSC_3317.jpg
[menu_order] => 0
[post_type] => attachment
[post_mime_type] => image/jpeg
[comment_count] => 0
[filter] => raw
)
[2716] => stdClass Object
(
[ID] => 2716
[post_author] => 1
[post_date] => 2011-10-07 15:35:32
[post_date_gmt] => 2011-10-07 10:35:32
[post_content] =>
[post_title] => DSC_2317
[post_excerpt] =>
[post_status] => inherit
[comment_status] => open
[ping_status] => closed
[post_password] =>
[post_name] => DSC_2317
[to_ping] =>
[pinged] =>
[post_modified] => 2011-10-07 15:35:32
[post_modified_gmt] => 2011-10-07 10:35:32
[post_content_filtered] =>
[post_parent] => 2714
[guid] => http://www.url.ru/wp-content/uploads/2011/10/DSC_2317.jpg
[menu_order] => 0
[post_type] => attachment
[post_mime_type] => image/jpeg
[comment_count] => 0
[filter] => raw
)
)
|
| |
|
|
|
|
|
|
|
для: tima2010
(08.10.2011 в 18:52)
| | Проще всего сформировать новый массив, в качестве ключей которого будет выступать не ID, а post_title, после чего отсортировать массив при помощи функции ksort() по ключам. Все это, конечно, будет справедливым только в том случае, если post_title - уникальное значение для каждого из элементов массива. | |
|
|
|
|
|
|
|
для: cheops
(08.10.2011 в 19:47)
| | Проще да, но нужно именно при такой структуре массива... :( | |
|
|
|
|
|
|
|
для: tima2010
(08.10.2011 в 19:49)
| | Правильно ли я понимаю, что это данные из MySQL и воспользоваться средствами сортировки MySQL тоже нельзя? | |
|
|
|
|
|
|
|
для: cheops
(08.10.2011 в 19:51)
| | Да это из mysql воспользоваться можно, но в моем случае нужно подойти методом сортировки без помощи mysql | |
|
|
|
|
|
|
|
для: tima2010
(08.10.2011 в 18:52)
| | Можно начать отталкиваться от следующего скрипта
<?php
// Вспомогательный класс, чтобы воспроизвести
// ситуацию
class inter
{
public $post_title;
public function __construct($post_title)
{
$this->post_title = $post_title;
}
}
// Неотсортированный массив
$arr[2714] = new inter("DSC_3317");
$arr[2715] = new inter("DSC_5317");
$arr[2716] = new inter("DSC_4317");
$arr[2717] = new inter("DSC_2317");
// Выводим для контроля
echo "<pre>";
print_r($arr);
echo "</pre>";
// Сортируем массива
uasort($arr, "cmp_inter");
// Выводим отсортированный массив
echo "<pre>";
print_r($arr);
echo "</pre>";
// Функция обратного вызова
function cmp_inter($a, $b)
{
if ($a->post_title == $b->post_title) {
return 0;
}
return ($a->post_title < $b->post_title) ? -1 : 1;
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(08.10.2011 в 20:08)
| | cheops, большое спасибо, буду разбираться | |
|
|
|