2016-10-19 26 views
1
<?php 
$arr=array("b"=>4,"a"=>2,"c"=>8,"d"=>"6"); 

class Sort { 

    public $arr = array(); 

    public function __construct(&$arr=array()) { 
     $this->arr = $arr; 
    } 

    static function my_sort($a,$b) { 
     //I am trying to cycle through the array $arr within this class 
     foreach ($this->arr as $key => $value) { 
      print "success"; 
     } 

     if ($a==$b) 
      return 0; 

     return ($a<$b)?-1:1; 
    } 

} 

uasort($arr,array("Sort","my_sort")); 
print_r($arr); 
?> 

我想通過數組$ ARR使用的foreach循環,同時內排序功能my_sort,但我想不出如何正確引用陣列。我建立了一個引用數組的公共構造函數,但我不確定如何在數組初始化後與數組進行交互。導入陣列成一類,並通過使用的foreach循環

+0

整理代碼....閱讀現在 – RiggsFolly

+0

那麼是什麼問題要容易得多?任何錯誤?東西..? – Naruto

+0

_Fatal錯誤:未捕獲錯誤:當不在對象上下文中時使用$ this – RiggsFolly

回答

0

IMO有2個問題:

  • 「進口」 到數組到你類:你做了什麼是好的
$arr = array("b"=>4,"a"=>2,"c"=>8,"d"=>"6"); 
$sort = new Sort($arr); 

你的陣列現已在你類引用

  • 排序數組:給你的類添加一個sort()函數
public function sort() 
{ 
    return uasort($this->arr, array(__CLASS__, "my_sort")); 
} 

使用功能

$sort->sort(); 

PS:你my_sort功能是錯誤的,它不應該包含$此。使用另一個非靜態函數來散步數組。

您可以修改sort()函數,即:

public function sort() 
{ 
    foreach ($this->arr as $item) { 
     //stuff 
    } 
    return uasort($this->arr, array(__CLASS__, "my_sort")); 
}