2012-01-12 5 views
0

:私はアルファベット順にオブジェクトをソートするためにしようとしていますオブジェクト内の最初の要素をつかむ(PHP)

Array 
( 
    [0] => SimpleXMLElement Object ([0] => Europe) 
    [1] => SimpleXMLElement Object ([0] => South America) 
    [3] => SimpleXMLElement Object ([0] => North America) 
    [4] => SimpleXMLElement Object ([0] => Asia) 
) 

。配列全体でsort()を使ってみましたが、うまくいきません。私はそれがオブジェクトの名前をつかんでいると仮定しています。オブジェクトの名前は、すべてのケースで同じで、代わりにそれらをソートしています。私は各オブジェクト内のテキストにアクセスしようとしていますが、 'SimpleXMLElement Object()'テキストをそれに持ってこないとできません。どのように私はそのテキストにアクセスし、たぶんテキスト値だけで新しい配列を再作成しますか?

EDIT:私は、次の試してみた:

$地域=ソート($領域)。 $ regions = usort($ regions);

ありがとうございます!

+0

あなたはusort()で試しましたか? –

+0

はい、それと同じ結果が出ました – jasonaburton

+0

usortについてのポイントは、それにカスタムソート関数を与えることです:http://www.php.net/manual/en/function.usort.php – Damien

答えて

3

あなたはを使用することができます。

<?php 
function pony_sorting($a, $b) 
{ 
    if ((string)$a[0] == (string)$b[0) { 
     return 0; 
    } 
    return ((string)$a[0] < (string)$b[0]) ? -1 : 1; 
} 

usort($a, "pony_sorting"); 

これはあなたの配列のデータ構造を維持します。しかし、SimpleXML要素を気にしない場合は、クリーンでメモリ効率の良い配列でエクスポートしてください。

$clean = array(); 
foreach ($a as $simplexml) 
{ 
    $clean[] = (string)$simplexml[0]; 
} 

(string)キャストに注意してください。これにより、simpleXmlElementの実際の値を取得できるようになります。

+0

私はほとんどの場合、値だけでオブジェクトがないので、私はあなたが提供したコードの後半部分を使用しています。そして、その配列に対して単純なsort()を使用します。ありがとう! – jasonaburton

関連する問題