2017-09-14 24 views
0

DrupalサイトでPHPのループを使って出力した値($ highschool)をアルファベット順に並べ替えることを任されました。私の理解は、このインスタンスで適切にソートするために、これらの値を新しい配列に配置する必要があることです。多次元配列の値を新しい配列に置き換えます

<select id="high_school" name="high_school_name" required=""> 
    <option value="">High School*</option> 

    <?php 
     $highschool_info = field_get_items('node', $node, 'field_high_school_info'); 
     for ($i = 0; $i < count($highschool_info); $i++) { 
     $value = field_view_value('node', $node, 'field_high_school_info', $highschool_info[$i]); 
     $field_collection = $value['entity']['field_collection_item'][key($value['entity']['field_collection_item'])]; 
     $highschool = render($field_collection['field_high_school']['#items'][0]['value']); 
    ?> 

    <option value="<?php print render ($highschool); ?>"><?php print render ($highschool);?></option> 
    <?php } ?> 
</select> 

私の考えは、私が高校の配列($ highschool_array)に$のすべてのインスタンスを置くことの私の目標を達成することができるだろうということでしたが、私は何が起こるかは$高校のすべての新しいインスタンスである以前に上書き考えます1つは配列に$ highschoolの最終インスタンスが含まれるようにします。

 $value = field_view_value('node', $node, 'field_high_school_info', $highschool_info[$i]); 
     $field_collection = $value['entity']['field_collection_item'][key($value['entity']['field_collection_item'])]; 
     $highschool = render($field_collection['field_high_school']['#items'][0]['value']); 

     $highschool_array= array(); 

     $highschool_array[] = $highschool; 

私が後にしていることを達成する最も簡単な方法は何ですか?明確にするために、上のループから$ highschool変数の4つのオプション値、First Highschool、Second Highschool、Third Highschool、Fours Highschoolを出力してみましょう。どのようにして$ highschool_arrayにこれらの値を入れることができますか?最初の高校、4番目の高校、2番目の高校、3番目の高校。

また、これは印刷時に$ highschool_infoの外観です。

Array 
(
[0] = Array 
    (
     [value] = 2718 
     [revision_id] = 189531 
    ) 

[1] = Array 
    (
     [value] = 2719 
     [revision_id] = 189532 
    ) 

[2] = Array 
    (
     [value] = 2720 
     [revision_id] = 189821 
    ) 

) 
+0

何が入力され、どのような出力が得られますか? – C2486

+0

あなたは '$ highschool'に配列のキーとして値を持たせたいのですか? – Gagantous

答えて

0
$highschool_array = array_multisort($highschool_info, SORT_ASC, SORT_STRING); 

array_multisort()あなたの最善の策になりそうです。 PHPのドキュメントの例2と3を見てください。

+0

これは私のために空の配列を作りました。 –

+0

'print_r($ highschool);'と結果をあなたの質問に追加できますか? – Spartacus

+0

明確にするために、$ highschoolは配列ではありません。配列は$ highschool infoの値の1つです。その情報を私の質問に追加します。 –