0

多次元配列の各配列の最後の値を取得し、それらを相互に比較して、ランク付けされた値を以前に作成した配列の最後に配置する必要があります。

私のPHP:

//Arrays
$rsIdeas_array = array();
$total_rank_array = array();

//Get Data
//MySQL Select Queries Here
//loop bizideas into array
do {
//Calculate variables needed
$search_rank = round(($row_rsIdeas['monthlysearches'] / $row_rsMaxSearches['monthlysearches'] * 9) + 1, 1, PHP_ROUND_HALF_EVEN);
$competition_rank = round(10 - (($row_rsIdeas['advcomp'] / ($row_rsMaxCompetition['advcomp']) * 9)), 1, PHP_ROUND_HALF_EVEN);
$search_competition_ease = ($search_rank + $competition_rank + $row_rsIdeas['startease']);
$row_rsIdeas['search_rank'] = $search_rank;
$row_rsIdeas['competition_rank'] = $competition_rank;
$row_rsIdeas['search_competition_ease'] = $search_competition_ease;

$row_rsIdeas = array(
  'ideaID' => $row_rsIdeas['ideaID'],
  'userID' => $row_rsIdeas['userID'],
  'bizidea' => $row_rsIdeas['bizidea'],
  'bizexplained' => $row_rsIdeas['bizexplained'],
  'bizmodel' => $row_rsIdeas['bizmodel'],
  'repkeyword' => $row_rsIdeas['repkeyword'],
  'monthlysearches' => $row_rsIdeas['monthlysearches'],
  'search_rank' => $row_rsIdeas['search_rank'],
  'advcomp' => $row_rsIdeas['advcomp'],
  'competition_rank' => $row_rsIdeas['competition_rank'],
  'search_competition_ease' => $row_rsIdeas['search_competition_ease'],
);
array_push($rsIdeas_array, $row_rsIdeas);
array_push($total_rank_array, $search_competition_ease);
} while ($row_rsIdeas = mysql_fetch_assoc($rsIdeas));

これが生み出す

Array
(
[0] => Array
    (
        [ideaID] => 1
        [userID] => 1
        [bizidea] => Business Idea 1
        [bizexplained] => Business Idea 1 Explanation
        [bizmodel] => Utility
        [repkeyword] => Business Idea 1 Keyword
        [monthlysearches] => 33100
        [search_rank] => 1
        [advcomp] => 0.95
        [competition_rank] => 1.1
        [search_competition_ease] => 8.1 //Value to Rank From
    )

[1] => Array
    (
        [ideaID] => 2
        [userID] => 1
        [bizidea] => Business Idea 2
        [bizexplained] => Business Idea 2 Explained
        [bizmodel] => Service
        [repkeyword] => Business 2 Keyword
        [monthlysearches] => 6600
        [search_rank] => 1
        [advcomp] => 0.93
        [competition_rank] => 1.3
        [search_competition_ease] => 10.3 //Value to Rank From
    )
)

ランキングを作成するセクションがあります。

arsort($total_rank_array); 
$rank = 1;
foreach($total_rank_array as $ideaId => $value) {
print('Rank: ' . $rank . '<br />Value: ' . $value . '<br />');
$rank++;

どちらが作成するか (数字が大きいほどランクが高くなります):

Rank: 1
Value: 10.3
Rank: 2
Value: 8.1

配列の順序を並べ替えずに、これらの値を正しい配列の最後に配置する必要があります。完成した配列で私が望むものの例を次に示します。

Array
(
[0] => Array
    (
        [ideaID] => 1
        [userID] => 1
        [bizidea] => Business Idea 1
        [bizexplained] => Business Idea 1 Explanation
        [bizmodel] => Utility
        [repkeyword] => Business Idea 1 Keyword
        [monthlysearches] => 33100
        [search_rank] => 1
        [advcomp] => 0.95
        [competition_rank] => 1.1
        [search_competition_ease] => 8.1
        [total_rank] => 2 //Here is where I need the additional value
    )

[1] => Array
    (
        [ideaID] => 2
        [userID] => 1
        [bizidea] => Business Idea 2
        [bizexplained] => Business Idea 2 Explained
        [bizmodel] => Service
        [repkeyword] => Business 2 Keyword
        [monthlysearches] => 6600
        [search_rank] => 1
        [advcomp] => 0.93
        [competition_rank] => 1.3
        [search_competition_ease] => 10.3
        [total_rank] => 1 //Here is where I need the additional value
    )
)

どうすればこれを達成できますか? 非常に多くのコードを含めて申し訳ありませんが、完全に理解していることを確認したいだけです。

事前にどうもありがとうございました!

4

1 に答える 1

0

私があなたのコードを理解していれば、これはうまくいくはずです:

arsort($total_rank_array);
foreach (array_keys($total_rank_array) as $i => $key)
{
    $rsIdeas_array[$key]['total_rank'] = $i+1;
}
于 2013-02-10T00:43:31.820 に答える