Создание массива, содержащего ранги на основе значений другого массива? - PullRequest
0 голосов
/ 30 августа 2011

В основном, у меня есть массивы $name, $followers и $imageurl, и я хотел бы расположить массив $followers численно, но также обновить расположение $name и $imageurl соответственно.

Например, $followers[0] = 2783848, $name[0] = "Rob" и $imageurl[0] = "http://xxx.com/image.jpeg", где все три массива связаны одним и тем же ключом массива.

Для примера, вот мой код:

$screennames = array(
                 0 => "LilKim",
                 1 => "NickiMinaj",
                 2 => "drakkardnoir",
                 3 => "LilTunechi",
                 4 => "kanyewest",
                 5 => "RealWizKhalifa",
                 6 => "beyonce",
                 7 => "KELLYROWLAND",
                 8 => "LupeFiasco",
                 9 => "TinieTempah",
                 10 => "50cent",
                 11 => "TRINArockstarr",
                 12 => "iamdiddy",
                 13 => "Timbaland",
                 14 => "chrisbrown"
                     );

for($i = 0; $i < 15; $i++) {
$xml[$i] = @simplexml_load_file('http://api.twitter.com/1/users/show.xml?screen_name=' . $screennames[$i]);
$name[$i] = $xml[$i]->name;
$followers[$i] = $xml[$i]->followers_count;
$imageurl[$i] = $xml[$i]->profile_image_url;
}

Любые советы / ответы / комментарии будут с благодарностью:) !!

Я также не уверен, что это лучший способ запрашивать API Twitter, поэтому, если у кого-то есть какие-либо рекомендации, не стесняйтесь оставлять их здесь:).

UPDATE:

Мне кажется, я нашел способ выразить это более точно;

У меня есть массивы $name, $followers и $imageurl, где каждое значение является относительным, например, $name[0] относительно $followers[0] и $imageurl[0]. Я хотел бы создать четвертый массив $rank, который содержит значения 1-15, упорядоченные на основе относительного значения последователей, например:

$followers = array(0 => 278738, 1 => 32784, 2 => 103562, 3 => 37848); // Etc from keys 0 - 14

$rank[0] = 1;
$rank[1] = 4;
$rank[2] = 2;
$rank[3] = 3;

Это должно облегчить понимание того, что я ищу.

1 Ответ

0 голосов
/ 30 августа 2011

Неважно, сохраните ли вы свои ключи. Для этого используйте asort. При циклическом просмотре массива имен значения будут расположены в алфавитном порядке (или, тем не менее, в зависимости от параметров asort), а индексы (ключи, числа) будут иметь числовой порядок.

//show by name alphabetically
asort($names); //puts names in alphabetic order, while preserving key associations
foreach ($names as $key=>$value) {
    echo "$value has " . $followers[$key] . ' followers<br>';
}

//show ordered by most followers
arsort($names, SORT_NUMERIC); //puts followers in reverse numeric order, while preserving key associations
foreach ($followers as $key=>$value) {
    echo $name[$key] . ' has $value followers<br>';
}  

Обновление

//Create rank array
$rank=0;
arsort($names, SORT_NUMERIC); //puts followers in reverse numeric order, while preserving key associations
foreach ($followers as $key=>$value) {
  $rank++; 
  $ranks[$rank]=$key;
}  

Затем вы можете циклически проходить через ряды и отображать их, или вставлять операторы или что-то еще.

foreach ($ranks as $rank=>$key) {
   echo "{$name[$key]} has rank $rank";
   $sql="INSERT INTO ranks ('username','followers','rank') VALUES ('{$name['$key']}','{$followers['$key']}','$rank')";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...