2016-10-03 4 views
1

제목과 같은 질문이 있습니다. 아래와 같이PHP의 다른 연관 배열 값으로 연관 배열 값 하나를 정렬하는 중

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

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

그리고 난 그 이름 arr1, arr2, arr3 병합 :

를/

내가 4 개 배열을 가지고, 나 자신에 의해 그것을 알아 내기 위해 노력하고 인터넷에 있지만 결과 검색

$data = array_merge_recursive($arr1, $arr2, $arr3); 

$ sortingArr의 값으로 'EURUSD'...와 같은 $ data의 값을 정렬하는 방법.

은 내가 명확하게 설명하고 PLS 여기에서의 나의 첫 번째 게시물 사촌 이해 될 :) 아래

+1

예상되는 출력은 무엇입니까? 'USDPLN'은'EURUSD'와'USDGBP' 사이에 있어야합니까? –

+0

는이 같은 $ sortingArr으로 분류 $ 데이터 배열 싶어 : 'EURUSD을' 'USDGBP', 'USDPLN' 지금 내가 가지고 : 'EURUSD', 'USDPLN', 'USDGBP ', –

+0

당신의 기대 출력은 알파벳 순으로 정렬됩니다. 왜'sort ($ mergedarray)'가 아닌가요? 예 https://eval.in/654407 –

답변

0

되는 함수를 다른 배열의 값을 기준으로 배열을 정렬 희망

<?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; 
} 

출력 :

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

해당. 또는 return array_merge ($ ordered, $ array);를 사용할 수 있습니다. 아직도 문제가 있습니까? –