2017-05-10 1 views
0

Ich habe ein Array $ Bobby mit den folgenden Arrays innerhalb. Es ist nach ID sortiert.Simplify PHP-Array von 5 Variablen auf 2 Variablen

1 
    id="1" 
    color="blue" 
    size="7" 
    height="10" 
    beebop="z" 

2 
    id="2" 
    color="red" 
    size="64" 
    height="52" 
    beebop="y" 
3 
    id="3" 
    color="pink" 
    size="72" 
    height="39" 
    beebop="not_x" 

Ich habe Probleme, die PHP-Funktion zu schaffen, die eine vereinfachte Anordnung schaffen ($bobby_simplified), die nur zwei Werte enthält, die ID und Farbe? So würde das neue Array wie folgt aussehen:

Auch in dieser Funktion, können wir nach Farbe aufsteigend sortieren?


habe ich versucht, die folgenden, aber ohne Glück:

  foreach ($bobby AS $bobby_simplified) { 
       $id = $bobby_simplified['id']; 
       $color = $bobby_simplified['color']; 
      } 
+0

'Kann ich eine PHP-Funktion erstellen Sie eine neue array' zu schaffen - ja. Was hast du probiert? "Können wir nach Farbe aufsteigend sortieren?" - Ja. Es gibt viele Fragen darüber, wie Arrays in PHP auf Stackoverflow zu sortieren sind, wie [dieser] (http://stackoverflow.com/questions/17364127/how-can-i-sort-arrays-and-data-in-php) . –

+0

Danke Robbie Averill. Ich habe die Funktion, die ich für den ersten Teil versucht habe, hinzugefügt. – ian

Antwort

1

Sie können die array_map() Funktion verwenden, um ein neues Array zu bekommen, und array_slice() ersten beiden Elemente des Sub-Array zu erhalten. Überprüfen Sie die live demo.

$simplified = array_map(function($v){return array_slice($v, 0, 2, true);}, $array); 
+0

Danke Kris Roofee: In Ihrem fxn nehme ich es $ v = $ bobby in meiner Funktion und $ array = $ bobby_simplified? – ian

+0

$ array ist ein nicht vereinfachtes Array, die Ausgabe von array_map() funciton ist ein vereinfachtes Array. –

1

können Sie das Array sortieren alphabetisch nach Farbe mit:

usort($arr, function($a, $b) { return strcmp($a['color'], $b['color']); }); 
+0

hast du OP Frage richtig gelesen? er will nicht sortieren array, Sie können down votes –

+1

Auf den unteren Rand seiner Frage hat er 'Auch, in dieser Funktion können wir sortieren nach Farbe aufsteigend?' – Enstage

1

etwas versuchen, wie dieser

foreach ($ bobby AS $ bobby_simplified) {
$ res = array ("id" => $ bobby_simplified ['id'], "farbe" => $ bobby_simplified ['color']);
}
print_r ($ res);

+1

'$ res 'wird ständig überschrieben werden, du meintest wahrscheinlich '$ res []' – Enstage

+0

sorry, natürlich $ res [] – enda

-1

dies versuchen, bereits getestet, hinzugefügt Sortierung nach Farbe

$array = [1=>['id'=> '1', 'color'=> 'blue', 'size'=>'7', 'height'=>'10', 'beebop'=>'z'], 
      2=>['id'=> '2', 'color'=> 'red', 'size'=>'64', 'height'=>'52', 'beebop'=>'y'], 
      3=>['id'=> '3', 'color'=> 'pink', 'size'=>'72', 'height'=>'39', 'beebop'=>'not_x'], 
     ]; 

foreach($array as $arr){ 

     $arr = array_splice($arr,0,2); 
     print_r($arr); 

     $array2[] = $arr; 
} 
    echo "<br>"; 
    print_r($array2); 

    echo "<br>"; 



function sortBy($field, &$array, $direction = 'asc') 
{ 
    usort($array, create_function('$a, $b', ' 
     $a = $a["' . $field . '"]; 
     $b = $b["' . $field . '"]; 

     if ($a == $b) 
     { 
      return 0; 
     } 

     return ($a ' . ($direction == 'desc' ? '>' : '<') .' $b) ? -1 : 1; 
    ')); 

    return true; 
} 

sortBy('color', $array2, 'asc'); 
print_r($array2);