Facebook PHP SDK приложение на день рождения с использованием FQL - PullRequest
0 голосов
/ 04 апреля 2011

Я новичок в программировании на PHP.Я использую FQL-запрос, чтобы получить дни рождения всех друзей пользователя.Но я хочу отсортировать пользователей по месяцам и дням.Возможно ли это в многомерных массивах?Я хочу:

$year = array('jan' => array('1' => array(data returned by fql query), '2' => array(data returned by fql query),..etc), 'feb' =>  array('1' => array(data returned by fql query)), 'mar' => array(), etc);

Возможно ли это?Пока мой код:

$query = "SELECT uid, first_name, last_name, birthday_date, sex, pic_square, current_location, hometown_location FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) AND strlen(birthday_date) != 0 ORDER BY birthday_date";

$year =array();
$prm  =   array(
          'method'    => 'fql.query',       
          'query'     => $query,
          'callback'  => ''     
          );



$friends  =  $facebook->api($prm);

for($m = 1;$m <= 12;$m++){
    $dm = mktime(0,0,0,$m,26);
    $dm = date("M", $dm);
    $year[] = $dm;

    for($d = 1;$d <= 31;$d++){
        $a2 = array($d => array());
        $a3 = $out[$dm];
        array_push($out,array($dm => array($d => "")));
    }                   
}

PS: я хочу иметь возможность представлять дни рождения в каждом месяце в делении, упорядочивать по дням месяцаСпасибо.

Ответы [ 2 ]

1 голос
/ 04 апреля 2011

multi_sort ($ myArray [index], SORT_NUMERIC, SORT_ASC) - это то, что вы ищете, и вы можете избавиться от вложенных циклов for. передать массив и индекс для сортировки, числовую сортировку, а также в SORT_ASC или SORT_DESC в зависимости от того, что вы хотите. Вам может понадобиться сначала удалить из тире тире или косые черты, поэкспериментировать и выяснить.

Вот справочная страница PHP. http://php.net/manual/en/function.array-multisort.php

0 голосов
/ 04 апреля 2011

Или вы можете сделать день / месяц ключом массива и отсортировать его на основе:

$sort = array();
foreach($friends as $friend)
{
    // note the extra 0's here, to give us padding to filter out duplicate array keys
    // this gives us an int in the format 030100, 093100, etc
    $key = (int)date('Md00', strtotime($friend['birthday_date']));

    // make sure we don't have duplicates...if the key already exists, incrememnt it by one
    while(isset($sort[$key])) $key++;

    $sort[$key] = $friend;
}

// sort the items by array key
ksort($sort);

// $sort now contains your friends, sorted by birthday.

Обратите внимание, что, как уже упоминалось, facebook позволяет вам выполнять сортировку по их окончанию, поэтому лучше всего позволить им выполнить свою работу. В некоторых случаях сортировка после запроса очень полезна, и, как правило, мне нравится это делать.

...