已声明的键上的未定义索引错误

时间:2015-10-04 05:58:47

标签: php arrays sorting multidimensional-array

我正在为扑克锦标赛建立一个排行榜(得分)。我的目标是将数据回显到一个表格,以显示本赛季的得分和所有时间的得分。我希望桌子能够以最高的赛季积分排列。 我收到一条错误消息:

Notice: Undefined index: season in C:\wamp\www\UPT Site\leaders.php on line 11

当我print_r来自$allplayers数组的数组时,它会显示所有玩家数组正确进入,包括[season]键和位于第6行的数据下面...

任何人都可以告诉我如何修复我的代码? (注意,真正的代码中没有行号,我只是在这里添加它们以便于讨论)。

1  foreach($allplayers as $player){
2  $i = $player[1];

3  if (${"seasonplayerid" . $i}){

4  $sum = array_sum(${"seasonplayerid" . $i});}
5  //$sum = points this season.

6  ${"playerid" . $i}['season'] = $sum;
7  }

8  function val_sort($array,$key) {      
9  //Loop through and get the values of our specified key 
10 foreach($array as $k=>$v) { 
11 $b[] = strtolower($v[$key]); 
12 } 
13 asort($b); 
14 /*   foreach($b as $k=>$v) { 
15      $c[] = $array[$k]; 
16  }return $c; 
17 */  
18 }
19 $sorted = val_sort($allplayers, '[season]'); 


20 foreach($allplayers as $player){
21    $i = $player[1];
22    echo ("<tr><td>" . $player[0] . $t . ${"playerid" . $i}[3] . $t . ${"playerid" . $i}[4] . $t. ${"playerid" . $i}['season'] . $t. count(${"seasonplayerid" . $i}). "</td><tr>");

23 }

以下是数组print_r的{​​{1}}输出:

数组([0] =&gt; Jonathan Thompson [1] =&gt; 1 [2] =&gt; 2015-S 3 [3] =&gt; 944 [4] =&gt; 7 [season] =&gt; 470)

以下是数组中信息的关键:

$playerid1

3 个答案:

答案 0 :(得分:1)

而不是下线

 $sorted = val_sort($allplayers, '[season]'); 

你应该传递密钥,如下所示

$sorted = val_sort($allplayers, 'season'); 

希望这有帮助。

答案 1 :(得分:1)

在第19行看起来你试图在第二个参数中传递密钥但是错误地定义了它。所以,要调用function val_sort($array,$key)你必须做类似的事情。

Therefore at line 19 change 

$sorted = val_sort($allplayers, '[season]'); 

  $sorted = val_sort($allplayers, 'season'); 

另外我建议您使用data table这是好的和快速的

答案 2 :(得分:0)

在这个例子中我做了一个狡猾的快速修复。 我在主数组中为每个数组写了一个循环到array_pop,并在array_pop循环开始时为每个数据片段创建了一个新变量。 我还array_push编辑了我想要排序的数据和一个新编号的ID号。 我使用rsort对新数组进行排序,然后使用ID号循环遍历它,按照我想输出数据的顺序重建第3个数组。 下次我将接受@rocky的建议并做一个数据表。我甚至可以回去重做这个页面作为数据表。说实话,我在昨天之前从未听说过数据表。一旦我将这个项目交给老板,我就会花时间学习数据表和AJAX。 谢谢大家的提示,但由于我的时间很差(这个网站明天早上需要上线),快速解决方案必须做这个时间。