Udało mi się posortować tablicę, ale nie tą co chciałem. W tej, na której mi zależy wciąz wyskakuje błąd, którego nie potrafię wyeliminować:
Kod
Warning: Cannot use a scalar value as an array in D:\PHP\tabelka\test2.php on line 57
Warning: Cannot use a scalar value as an array in D:\PHP\tabelka\test2.php on line 58
Warning: Cannot use a scalar value as an array in D:\PHP\tabelka\test2.php on line 59
Warning: Cannot use a scalar value as an array in D:\PHP\tabelka\test2.php on line 57
Warning: Cannot use a scalar value as an array in D:\PHP\tabelka\test2.php on line 58
Warning: Cannot use a scalar value as an array in D:\PHP\tabelka\test2.php on line 59
Warning: Cannot use a scalar value as an array in D:\PHP\tabelka\test2.php on line 57
Warning: Cannot use a scalar value as an array in D:\PHP\tabelka\test2.php on line 58
Warning: Cannot use a scalar value as an array in D:\PHP\tabelka\test2.php on line 59
Warning: Cannot use a scalar value as an array in D:\PHP\tabelka\test2.php on line 57
Warning: Cannot use a scalar value as an array in D:\PHP\tabelka\test2.php on line 58
Warning: Cannot use a scalar value as an array in D:\PHP\tabelka\test2.php on line 59
Warning: array_multisort() [function.array-multisort]: Argument #1 is expected to be an array or sorting flag that has not already been specified in D:\PHP\tabelka\test2.php on line 65
Kod mojego skryptu:
<?php
require 'libs/Smarty.class.php';
$smarty = new Smarty;
// pobieranie danych zawodników
{
// punkty
$rank = mysql_query("SELECT * FROM matches WHERE home=".$row['player_id'].""); {
$goals = $goals + $goal['home_goals'] - $goal['away_goals'];
$goals_in = $goals_in + $goal['home_goals'];
$goals_out = $goals_out + $goal['away_goals'];
if($goal['home_goals'] > $goal['away_goals'])
$points += 3;
if($goal['home_goals'] == $goal['away_goals'])
$points += 1;
}
$rank = mysql_query("SELECT * FROM matches WHERE away=".$row['player_id'].""); {
$goals = $goals + $goal['away_goals'] - $goal['home_goals'];
$goals_in = $goals_in + $goal['away_goals'];
$goals_out = $goals_out + $goal['home_goals'];
if($goal['home_goals'] < $goal['away_goals'])
$points += 3;
if($goal['home_goals'] == $goal['away_goals'])
$points += 1;
}
'points' => $points,
'goals' => $goals,
'goals_in' => $goals_in,
'goals_out' => $goals_out,
'id' => $row['player_id'],
'name' => $row['player_name'],
'team' => $team['team_name'],
);
$goals = 0;
$goals_in = 0;
$goals_out = 0;
$points = 0;
}
foreach ($players as $klucz => $wiersz) {
$points[$klucz] = $wiersz['points'];
$goals[$klucz] = $wiersz['goals'];
$goals_in[$klucz] = $wiersz['goals_in'];
}
array_multisort($points, SORT_DESC
, $goals, SORT_DESC
, $goals_in, SORT_DESC
, $players);
$smarty->assign('players', $players);
$smarty->display('index.tpl');
?>
wydruk z nieposortowanej tablicy:
Kod
Array
(
[0] => Array
(
[points] => 3
[goals] => -1
[goals_in] => 5
[goals_out] => 6
[id] => 1
[name] => andrzej
[team] => Manchester United FC
)
[1] => Array
(
[points] => 1
[goals] => -4
[goals_in] => 1
[goals_out] => 5
[id] => 2
[name] => wojtek
[team] => FC Barcelona
)
[2] => Array
(
[points] => 7
[goals] => 4
[goals_in] => 6
[goals_out] => 2
[id] => 3
[name] => zbigniew
[team] => Real Madrid
)
[3] => Array
(
[points] => 6
[goals] => 1
[goals_in] => 7
[goals_out] => 6
[id] => 4
[name] => romek
[team] => Inter
)
)
Jak widać skrypt odpowiednio kompletuje dane, ale coś jest z nimi nie tak ;/
Może podam skrypt, który udało mi się stworzyć i działa bez zastrzeżen:
<?php
$players[] = array('points' => 24, 'goals' => 5, 'goals_in' => 12, 'name' => 'andrzej'); $players[] = array('points' => 21, 'goals' => 4, 'goals_in' => 5, 'name' => 'andrzej'); $players[] = array('points' => 24, 'goals' => 2, 'goals_in' => 13, 'name' => 'andrzej'); $players[] = array('points' => 44, 'goals' => 15, 'goals_in' => 24, 'name' => 'andrzej'); $players[] = array('points' => 14, 'goals' => 1, 'goals_in' => 4, 'name' => 'andrzej'); $players[] = array('points' => 16, 'goals' => -2, 'goals_in' => 11, 'name' => 'andrzej'); $players[] = array('points' => 33, 'goals' => 11, 'goals_in' => 22, 'name' => 'andrzej');
foreach ($players as $klucz => $wiersz) {
$points[$klucz] = $wiersz['points'];
$goals[$klucz] = $wiersz['goals'];
$goals_in[$klucz] = $wiersz['goals_in'];
}
array_multisort($points, SORT_DESC
, $goals, SORT_DESC
, $goals_in, SORT_DESC
, $players);
?>
<pre>
<?
?>
</pre>
Osobiście nie widze różnicy między tymi skryptami, ale widocznie interpreter Php je zauważa

Byłbym wdzięczny za pomoc
PS. Jeśli popełniłem jakiś bardzo głupi błąd, to przepraszam, dopiero raczkuję w php