私はこの状況をよく笑っています。それは巨大なアプリケーションでありますので、私はちょうどすべてをアップロードすることはできませんが、ここで私のコードの地元、関連する部分である:他では配列が神秘的にオブジェクトに変換されてからusort()がそれを見る直前
`` `
public function reallyCustomSort($thing, $options='')
{
die('dying. gettype results for our param: '.gettype($thing));
//Gives us "array." So why does usort complain about "object given?"
die('dying. get_class results for our param: '.get_class($thing)); // Gives us "get_class() expects parameter 1 to be object, array given.
usort($thing, 'AppBundle\Twig\CustomSort::customCompare'); // Gives us "Warning: usort() expects parameter 1 to be array, object given"
die('We are done here.');
return($thing);
}
public function someRandomFunction($thing){
die('dying in someRandomFunction. gettype results for our param: '.gettype($thing)); //Gives us "array."
}
` ``
私の変数を解析する2つの関数呼び出しは、それが配列であることに同意し、その後、usort()関数はその変数にオブジェクトが含まれていると考えます。
誰もこの行動を以前に遭遇したことはありますか?もしそうなら、どうやって周りを回ったのですか?
私はすでに試したいくつかのこと:
睡眠を挿入()レース条件が関与しているかどうかを確認するために呼び出します。 (下記の 要点を参照してください。)運がない。 関数へ
$thing
の単なる通過変換を引き起こしていたいくつかの奇妙な理由のためだけに かどうかを確認するために別の関数に$thing
変数を渡す。運がない。
アプリ内のさまざまなキャッシュをクリアします。運がない。
私が試したいくつかのより多くの(コメントアウト)のコードを示すものと要旨:SOに大きく基づいて、
https://gist.github.com/patrickmaynard/7c3c7f0695e223e6903fd729172b4c21
何が起こっているのかわからないのは、そのコードの多くがコメントアウトされているためです。実際に重要な行だけを表示する例を提供できますか? – jaswrks
参照:http://php.net/manual/en/language.references.pass.php〜作業中のデータが「参照」によって操作されていないことを確認してください。このような混乱を招く可能性があります。 – jaswrks
'usort()'は '参照で'動作しますが、配列をオブジェクトに変換しないので、問題の原因とは思われません。 'usort()'を呼び出す前のどこかで起こっています。 – jaswrks