1

わかりました、私は本当に簡単なものを試しています。

ここにあります:

usort($newarr, "cmp");

function cmp($a, $b)
{ return 0; }

問題は単純です: この警告メッセージを表示して配列をソートしません。

Warning: usort() expects parameter 2 to be a valid callback, function 'cmp' not found or invalid function name

ここでこの回答を読みましたPHP usort will not sort

しかし、それは私には意味がありません。回答1で説明されているようなクラスはありません(そして、必要さえありません。「myclass」の代わりに$ this、thisで試しましたしかし、それは単に機能していません):

usort($items, array("MyClass", "compare_method"));
4

3 に答える 3

1

あなたがあなたの質問で投稿した情報から、それがあなたのために機能しない理由を具体的に言うことはできません。

コードは一般的に機能します、それは完全に大丈夫です(デモ):

<?php
$newarr = array();

if (!function_exists('cmp')) echo "cmp() not defined yet.\n";
usort($newarr, "cmp");

function cmp($a, $b)
{ return 0; }

実際の問題がどこにあるかをより適切に伝えることができるように、質問にさらに情報を追加することをお勧めします。

  • どのPHPバージョンを使用していますか?
  • 名前空間を利用していますか?
于 2012-04-16T09:17:57.697 に答える
1

配列を並べ替えようとしている時点で、スクリプト フローを変更してください。配列cmpはまだ存在しません。したがって、これは機能するはずです:

function cmp($a, $b)
{ return 0; }

usort($newarr, "cmp");
于 2012-04-16T09:12:04.520 に答える
0

匿名関数(またはcreate_function) を使用して のような匿名関数を作成し、cmpそれを に渡しますusort

例:

usort($newarr, function($a, $b) {
    return 0;
});
于 2012-04-16T09:10:46.310 に答える