グローバルが指定されていても、そのメソッドのサブ関数内からメソッドパラメータ変数を参照することは機能していないようです。サブ関数内のメソッド変数の利用可能性
サブパラメータ内からメソッドパラメータを参照することは可能ですか?もしそうなら...どう?
上記の私の具体例では、私は同じ目標を達成するためにクロージャを使用することができたが、スクリプトをPHP 5.3に依存しないようにしたいと思います。
グローバルが指定されていても、そのメソッドのサブ関数内からメソッドパラメータ変数を参照することは機能していないようです。サブ関数内のメソッド変数の利用可能性
サブパラメータ内からメソッドパラメータを参照することは可能ですか?もしそうなら...どう?
上記の私の具体例では、私は同じ目標を達成するためにクロージャを使用することができたが、スクリプトをPHP 5.3に依存しないようにしたいと思います。
何か理由はありませんか?電車の中で、
public function sortArray(&$array, $keyToCompare){
return uasort($array, function($pairA, $pairB) uses ($keyToCompare) {
return strcmp($pairA[$keyToCompare], $pairB[$keyToCompare]);
});
}
未テスト:
class YourClassName {
public static $keyToCompare;
public function sortArray(&$array, $keyToCompare){// BOOL sortArray(ARR &$array, STR $keyToCompare)
self::$keyToCompare = $keyToCompare;
function cmpVals($pairA, $pairB){
$keyToCompare = YourClassName::$keyToCompare;
return strcmp($pairA[$keyToCompare], $pairB[$keyToCompare]);
}
return uasort($array, 'cmpVals');
}
}
私はそれを考えなかったので?多くのおかげで、それは最もエレガントではないが、うまくいく(私のような) –
私の元の応答はそれがハッキーだったことを言及した:) – jmathai
すでにPHP 5.3でOOPを使用していたようです。ソータークラスを作成するかもしれませんか?
class Sorter{
private $key;
function __construct($key){
$this->key = $key;
}
private function compare($a, $b){
return strcmp($a[$this->key], $b[$this->key]);
}
public function sort($a){
uasort($a, array($this, 'compare'));
}
}
別のオプションは、匿名関数であるDが、詳細はthe documentationを参照してください。
参考までに、配列を変更しないので参照渡しは不要です。PHPはコピーを作成せず、値渡しのメモリ問題はありません。
私はPHP 5.2.17で匿名機能は動作していないようです。それははるかに美しいだろう。電車で楽しく過ごしましょう。 –
PHPこのようなスコープをサポートしていません。それはそれと同じくらい簡単です... – ircmaxell
なぜあなたは関数を入れ子にする必要がありますか? – zerkms
それはありませんか?アー!どうすればいいですか? 入れ子関数を定義して、uasort関数で使用できるようにするだけです –