2016-10-03 4 views
1

Ich habe Frage wie im Titel. Ich habe versucht, es selbst herauszufinden und im Internet gesucht, aber ohne Ergebnis;/Sortierung eines assoziativen Array-Wertes durch einen anderen assoziativen Array-Wert in PHP

Ich habe 4-Arrays:

$sortingArr = array(
    0 => 'EURUSD', 
    1 => 'USDGBP' 
); 

$arr1 = array('name' => 'EURUSD'); 
$arr2 = array('name' => 'USDPLN'); 
$arr3 = array('name' => 'USDGBP'); 

und ich verschmolzen Genannten arr1, arr2, arr3 wie unten zu sehen:

Wie Werte von $ Daten wie 'EURUSD' ... durch Werte von $ sortingArr.

Ich hoffe, dass ich dies deutlich erklärt und pls hier coz seine meinem ersten Beitrag werden das Verständnis :)

+1

Was ist Ihre erwartete Ausgabe? Sollte "USDPLN" zwischen "EURUSD" und "USDGBP" oder danach liegen? –

+0

ich will von $ sortingArr wie folgt sortiert $ data-Array erhalten: 'EURUSD', 'USDGBP', 'USDPLN' jetzt habe ich: 'EURUSD', 'USDPLN', ‚USDGBP ', –

+0

Ihre erwartete Ausgabe folgt der grundlegenden alphabetischen Sortierung, warum nicht einfach 'sort ($ mergedarray)'? Beispiel https://eval.in/654407 –

Antwort

0

unter der Funktion wird ein Array von Werten einer anderen Array

<?php 
    //sorting array 
    $sortingArr = array(
    0 => 'EURUSD', 
    1 => 'USDGBP', 
); 
$arr1 = array('name' => 'EURUSD'); 
$arr2 = array('name' => 'USDPLN'); 
$arr3 = array('name' => 'USDGBP'); 
// to be sorted array 
$data = array_merge_recursive($arr1, $arr2, $arr3); 
// calling a custom function 
$new_data = sortArrayByArrayValue($data['name'],$sortingArr); 
print_r($new_data); // print results 

function sortArrayByArrayValue($array, $orderArray) { 
    $ordered = array(); 
    // loop the array 
    foreach ($orderArray as $key=>$value) { 
     // check the value is in the $array 
     if (($k = array_search($value, $array)) !== false) { 
      // assign thet value to new array 
      $ordered[$k] = $array[$k]; 
      // unset the value 
      unset($array[$k]); 
     } 
    } 
    return $ordered+ $array; 
} 

Ausgabe zu sortieren:

Array 
(
    [0] => EURUSD 
    [2] => USDGBP 
    [1] => USDPLN 
) 
+0

ist korrekt. oder Sie können return array_merge ($ ordered, $ array); Hast du immer noch Probleme? –

Verwandte Themen