2011-12-09 11 views
0

私はdbから引き出す製品の配列を持っています。このPHPコードが正しい値を返さない配列をソートするのはなぜですか?

$unsorted_products = products::get(array('collection' => $collection->id)); 
die(print_r($unsorted_products)); 

を...と私は期待するような結果は以下のとおりです。私は、次のコードを使用して、これらが正しいことを確認しました。基本的に親カテゴリとカテゴリでグループ化する必要があります。彼らはどのように各グループ内でソートされていますが、私は気にしません。私はSQLを介してデータを取得しているモデルを変更するアクセス権がないので、PHP経由でこの配列をソートする必要があります。私は、次のコードを使用しています:

$products = usort($unsorted_products, function ($a, $b) { 
     return strcmp(
      $a->parentcategory.$a->categoryname, 
      $b->parentcategory.$b->categoryname 
     ); 
    }); 

を...しかし、ダンプ$products配列は、それが唯一の値1.私が間違っているの何任意のアイデアを持っていることが明らかになりましたか?私は、アクセスしようとしているプロパティが各オブジェクトに存在することを確認しました。

ありがとうございました。

答えて

4

入力配列をソートします。 usortマニュアルから

戻り値成功した場合にTRUEを、失敗した場合にFALSE。

+0

$products = products::get(array('collection' => $collection->id)); 

と、この:この操作を行います – GreenMatt

1

あなたは間違っています。 usortは配列を返さず、etherをtrueまたはfalseで返します。最初のパラメーターとして渡す配列を変更します。

コードの実行後、$ unsorted_productsはソートされた配列になります。 http://php.net/manual/en/function.usort.php:でなり

usort($products, function ($a, $b) { 
     return strcmp(
      $a->parentcategory.$a->categoryname, 
      $b->parentcategory.$b->categoryname 
     ); 
    }); 
関連する問題