2017-12-14 17 views
-1

두 배열을 일치시켜 배열을 제거하십시오. 하나는 간단한 배열이고 다른 하나는 다차원 배열입니다. 첫 번째 배열에 값이 없으면 두 번째 배열의 요소를 제거하고 싶습니다. 따라서 첫 번째 배열에는 총 20 개의 요소가 있습니다. 따라서 두 번째 배열에는 20 개의 요소 만있을 것입니다.두 배열을 일치시켜 배열을 제거하십시오.

최종 결과 값은 Ist 배열과 일치해야합니다. 첫 번째 배열에서 값이 일치하지 않는 두 번째 배열의 요소가 없습니다. 그래서 값이 첫 번째 배열과 일치하는 두 번째 배열의 요소 만.

  Array 
(
[0] => Array 
    (
     [label] => Afrikaans 
     [value] => af 
    ) 

[1] => Array 
    (
     [label] => Albanian 
     [value] => sq 
    ) 

[2] => Array 
    (
     [label] => Arabic 
     [value] => ar 
    ) 

[3] => Array 
    (
     [label] => Armenian 
     [value] => hy 
    ) 

[4] => Array 
    (
     [label] => Azerbaijani 
     [value] => az 
    ) 

[5] => Array 
    (
     [label] => Basque 
     [value] => eu 
    ) 

[6] => Array 
    (
     [label] => Belarusian 
     [value] => be 
    ) 

[7] => Array 
    (
     [label] => Bengali 
     [value] => bn 
    ) 

[8] => Array 
    (
     [label] => Bosnian 
     [value] => bs 
    ) 

[9] => Array 
    (
     [label] => Bulgarian 
     [value] => bg 
    ) 

[10] => Array 
    (
     [label] => Catalan 
     [value] => ca 
    ) 

[11] => Array 
    (
     [label] => Cebuano 
     [value] => ceb 
    ) 

[12] => Array 
    (
     [label] => Chinese 
     [value] => zh-CN 
    ) 

[13] => Array 
    (
     [label] => Chinese (Traditional) 
     [value] => zh-TW 
    ) 

[14] => Array 
    (
     [label] => Croatian 
     [value] => hr 
    ) 

[15] => Array 
    (
     [label] => Czech 
     [value] => cs 
    ) 

[16] => Array 
    (
     [label] => Danish 
     [value] => da 
    ) 

[17] => Array 
    (
     [label] => Dutch 
     [value] => nl 
    ) 

[18] => Array 
    (
     [label] => English 
     [value] => en 
    ) 

[19] => Array 
    (
     [label] => Esperanto 
     [value] => eo 
    ) 

[20] => Array 
    (
     [label] => Estonian 
     [value] => et 
    ) 

첫번째 배열

 Array 
(
[0] => ar 
[1] => bn 
[2] => zh-CN 
[3] => en 
[4] => fr 
[5] => de 
[6] => el 
[7] => gu 
[8] => hi 
[9] => it 
[10] => ja 
[11] => kn 
[12] => ko 
[13] => la 
[14] => mr 
[15] => pa 
[16] => ru 
[17] => es 
[18] => ta 
[19] => te 
[20] => ur 
) 

2 어레이

Array 
(
[0] => Array 
    (
     [label] => Afrikaans 
     [value] => af 
    ) 

[1] => Array 
    (
     [label] => Albanian 
     [value] => sq 
    ) 

[2] => Array 
    (
     [label] => Arabic 
     [value] => ar 
    ) 

[3] => Array 
    (
     [label] => Armenian 
     [value] => hy 
    ) 

[4] => Array 
    (
     [label] => Azerbaijani 
     [value] => az 
    ) 

[5] => Array 
    (
     [label] => Basque 
     [value] => eu 
    ) 

[6] => Array 
    (
     [label] => Belarusian 
     [value] => be 
    ) 

[7] => Array 
    (
     [label] => Bengali 
     [value] => bn 
    ) 

[8] => Array 
    (
     [label] => Bosnian 
     [value] => bs 
    ) 

[9] => Array 
    (
     [label] => Bulgarian 
     [value] => bg 
    ) 

[10] => Array 
    (
     [label] => Catalan 
     [value] => ca 
    ) 

[11] => Array 
    (
     [label] => Cebuano 
     [value] => ceb 
    ) 

[12] => Array 
    (
     [label] => Chinese 
     [value] => zh-CN 
    ) 

[13] => Array 
    (
     [label] => Chinese (Traditional) 
     [value] => zh-TW 
    ) 

[14] => Array 
    (
     [label] => Croatian 
     [value] => hr 
    ) 

[15] => Array 
    (
     [label] => Czech 
     [value] => cs 
    ) 

[16] => Array 
    (
     [label] => Danish 
     [value] => da 
    ) 

[17] => Array 
    (
     [label] => Dutch 
     [value] => nl 
    ) 

[18] => Array 
    (
     [label] => English 
     [value] => en 
    ) 

[19] => Array 
    (
     [label] => Esperanto 
     [value] => eo 
    ) 

[20] => Array 
    (
     [label] => Estonian 
     [value] => et 
    ) 

[21] => Array 
    (
     [label] => Filipino 
     [value] => tl 
    ) 

[22] => Array 
    (
     [label] => Finnish 
     [value] => fi 
    ) 

[23] => Array 
    (
     [label] => French 
     [value] => fr 
    ) 

[24] => Array 
    (
     [label] => Galician 
     [value] => gl 
    ) 

[25] => Array 
    (
     [label] => Georgian 
     [value] => ka 
    ) 

[26] => Array 
    (
     [label] => German 
     [value] => de 
    ) 

[27] => Array 
    (
     [label] => Greek 
     [value] => el 
    ) 

[28] => Array 
    (
     [label] => Gujarati 
     [value] => gu 
    ) 

[29] => Array 
    (
     [label] => Haitian 
     [value] => ht 
    ) 

[30] => Array 
    (
     [label] => Hausa 
     [value] => ha 
    ) 

[31] => Array 
    (
     [label] => Hebrew 
     [value] => iw 
    ) 

[32] => Array 
    (
     [label] => Hindi 
     [value] => hi 
    ) 

[33] => Array 
    (
     [label] => Hmong 
     [value] => hmn 
    ) 

[34] => Array 
    (
     [label] => Hungarian 
     [value] => hu 
    ) 

[35] => Array 
    (
     [label] => Icelandic 
     [value] => is 
    ) 

[36] => Array 
    (
     [label] => Igbo 
     [value] => ig 
    ) 

[37] => Array 
    (
     [label] => Indonesian 
     [value] => id 
    ) 

[38] => Array 
    (
     [label] => Irish 
     [value] => ga 
    ) 

[39] => Array 
    (
     [label] => Italian 
     [value] => it 
    ) 

[40] => Array 
    (
     [label] => Japanese 
     [value] => ja 
    ) 

[41] => Array 
    (
     [label] => Javanese 
     [value] => jv 
    ) 

[42] => Array 
    (
     [label] => Kannada 
     [value] => kn 
    ) 

[43] => Array 
    (
     [label] => Khmer 
     [value] => km 
    ) 

[44] => Array 
    (
     [label] => Korean 
     [value] => ko 
    ) 

[45] => Array 
    (
     [label] => Lao 
     [value] => lo 
    ) 

[46] => Array 
    (
     [label] => Latin 
     [value] => la 
    ) 

[47] => Array 
    (
     [label] => Latvian 
     [value] => lv 
    ) 

[48] => Array 
    (
     [label] => Lithuanian 
     [value] => lt 
    ) 

[49] => Array 
    (
     [label] => Macedonian 
     [value] => mk 
    ) 

[50] => Array 
    (
     [label] => Malay 
     [value] => ms 
    ) 

[51] => Array 
    (
     [label] => Maltese 
     [value] => mt 
    ) 

[52] => Array 
    (
     [label] => Maori 
     [value] => mi 
    ) 

[53] => Array 
    (
     [label] => Marathi 
     [value] => mr 
    ) 

[54] => Array 
    (
     [label] => Norwegian 
     [value] => no 
    ) 

[55] => Array 
    (
     [label] => Persian 
     [value] => fa 
    ) 

[56] => Array 
    (
     [label] => Polish 
     [value] => pl 
    ) 

[57] => Array 
    (
     [label] => Portuguese 
     [value] => pt 
    ) 

[58] => Array 
    (
     [label] => Punjabi 
     [value] => pa 
    ) 

[59] => Array 
    (
     [label] => Romanian 
     [value] => ro 
    ) 

[60] => Array 
    (
     [label] => Russian 
     [value] => ru 
    ) 

[61] => Array 
    (
     [label] => Serbian 
     [value] => sr 
    ) 

[62] => Array 
    (
     [label] => Slovak 
     [value] => sk 
    ) 

[63] => Array 
    (
     [label] => Slovenian 
     [value] => sl 
    ) 

[64] => Array 
    (
     [label] => Somali 
     [value] => so 
    ) 

[65] => Array 
    (
     [label] => Spanish 
     [value] => es 
    ) 

[66] => Array 
    (
     [label] => Swahili 
     [value] => sw 
    ) 

[67] => Array 
    (
     [label] => Swedish 
     [value] => sv 
    ) 

[68] => Array 
    (
     [label] => Tamil 
     [value] => ta 
    ) 

[69] => Array 
    (
     [label] => Telugu 
     [value] => te 
    ) 

[70] => Array 
    (
     [label] => Thai 
     [value] => th 
    ) 

[71] => Array 
    (
     [label] => Turkish 
     [value] => tr 
    ) 

[72] => Array 
    (
     [label] => Ukrainian 
     [value] => uk 
    ) 

[73] => Array 
    (
     [label] => Urdu 
     [value] => ur 
    ) 

[74] => Array 
    (
     [label] => Vietnamese 
     [value] => vi 
    ) 

[75] => Array 
    (
     [label] => Welsh 
     [value] => cy 
    ) 

[76] => Array 
    (
     [label] => Yiddish 
     [value] => yi 
    ) 

[77] => Array 
    (
     [label] => Yoruba 
     [value] => yo 
    ) 

[78] => Array 
    (
     [label] => Zulu 
     [value] => zu 
    ) 

) 

Example

+4

, 공유 할 수 있습니까? –

+0

명확히하려면 : 79 개의 항목이있는 맨 아래에있는 배열이 입력 데이터이며 중간에있는 1 차원 배열을 사용하여이를 필터링하고 질문의 첫 번째 배열이 예상되는 출력입니까? 그러나 질문의 ​​첫 번째 및 두 번째 배열 (예 : 필터 및 결과 배열)의 항목이 일치하지 않는 것 같습니다 (예 : "af"는 첫 번째와 세 번째에 있지만 두 번째 배열에는 없습니다. –

+0

예를 들어 –

답변

1
$a1 = your first array; 
$a2 = second array; 

foreach($a2 as $k => $v) 
{ 
    if(!in_array($v['value'],$a1) 
    { 
     unset($a2[$k]); 
    } 
} 

그러면 $ a2에 $a1에 남아있는 값만 남게됩니다. (난 ... 이해하기 위해 관리하는 경우)

+0

링크를 추가했습니다. 최종 배열을 얻는 방법은 무엇입니까? –

+0

foreach 모양 다음에 print_r ($ a2);을하면 $ a2가 원하는 배열임을 알 수 있습니다. –

-1

쉬운

let newArray = languages.filter(lang => return codes.indexof(lang.value) !== -1); 

UPDATE

아 미안 내 :-) 잘못된 언어,

$final = array_filter($languages, function($language) use($codes) { return in_array($language['value'], $codes)}); 

업데이트 2

array_filter는 배열을 필터링하는 데 사용할 수 있습니다 .- 기본적으로 array_filter는 "거짓"값을 제거합니다. 두 번째 매개 변수로 콜백을 사용하면 입력 배열을 필터링하는 방법을 정의 할 수 있습니다. 첫 번째 매개 변수는 입력 배열입니다.

나는 더 깨끗하고 견고하기 때문에 원래 값을 설정 해제하는 대신 array_filter를 사용합니다.

PHP는 익명 함수를 알고 있습니다. 필터 연산은이를위한 완벽한 용도입니다.

:

use($codes) 

내가 좋아하는 필터를 정의 할 경우 : PHP는 거기에 우리가 범위 지정의 어떤 종류를 시뮬레이션하기 위해 특수 구문을 사용할 필요가 최고의 프로그래밍 언어가 아니기 때문에, 당신은이 부분을 참조하는 이유 이잖아

$final = array_filter($languages, function($language) { 
    return in_array($language['value'], $codes) 
}); 

$ code가 함수 범위 내에 정의되어 있지 않으므로 PHP에서 예외가 발생합니다.

익명 함수는 use() 블록을 지원하므로 코드 배열을 함수에 "노출"할 수 있습니다. 언어가 우리의 $ 코드 배열 내부의 언어 값을 검색하여, 유효한 경우

$final = array_filter($languages, function($language) use($codes) { 
    return in_array($language['value'], $codes) 
}); 

마침내 우리가 확인 (허용 된 언어를 개최합니다).$ 코드에 코드가 없으면 in_array는 false을 반환하고 array_filter로 반환하므로이 요소는 유효하지 않습니다.

확인 된 언어의 코드가 코드에 존재하면 in_array가 true를 반환하고 array_filter에 반환하면 해당 항목이 유효합니다.

+1

이것은'php' man에 관한 것입니다. –

+0

죄송합니다. 오늘 코딩이 너무 많습니다 ... PHP 코드 조각을 추가했습니다. 고마워요 –

+0

코드 –

0

두 번째 배열의 인덱스를 유지할 필요가 없다고 가정하면 첫 번째 배열을 뒤집어 임시 키를 두 번째 배열에 할당하고 array_intersect_key()을 호출 할 수 있습니다.

이 함수는 여러 함수 호출을하는 것으로 보이지만 루프에서는 수행되지 않습니다. 루프 내부에 in_array()을 사용하면 PHP가 59 개의 전체 배열 스캔과 20 개의 부분 스캔을 수행한다는 것을 의미합니다. 이는 효율적이지 않습니다.

코드 : (Demo)

var_export( // print to screen 
    array_values( // this is optional. This just reindexes the array 
     array_intersect_key( // retain elements where key exists in both arrays 
      array_column($fulllist,null,'value'), // make new keys for 2nd array 
      array_flip($keep) // swap values and indexes of 1st array 
     ) 
    ) 
); 

출력 : 당신이 시도 했는가

array (
    0 => 
    array (
    'label' => 'Arabic', 
    'value' => 'ar', 
), 
    1 => 
    array (
    'label' => 'Bengali', 
    'value' => 'bn', 
), 
    2 => 
    array (
    'label' => 'Chinese', 
    'value' => 'zh-CN', 
), 
    3 => 
    array (
    'label' => 'English', 
    'value' => 'en', 
), 
    4 => 
    array (
    'label' => 'French', 
    'value' => 'fr', 
), 
    5 => 
    array (
    'label' => 'German', 
    'value' => 'de', 
), 
    6 => 
    array (
    'label' => 'Greek', 
    'value' => 'el', 
), 
    7 => 
    array (
    'label' => 'Gujarati', 
    'value' => 'gu', 
), 
    8 => 
    array (
    'label' => 'Hindi', 
    'value' => 'hi', 
), 
    9 => 
    array (
    'label' => 'Italian', 
    'value' => 'it', 
), 
    10 => 
    array (
    'label' => 'Japanese', 
    'value' => 'ja', 
), 
    11 => 
    array (
    'label' => 'Kannada', 
    'value' => 'kn', 
), 
    12 => 
    array (
    'label' => 'Korean', 
    'value' => 'ko', 
), 
    13 => 
    array (
    'label' => 'Latin', 
    'value' => 'la', 
), 
    14 => 
    array (
    'label' => 'Marathi', 
    'value' => 'mr', 
), 
    15 => 
    array (
    'label' => 'Punjabi', 
    'value' => 'pa', 
), 
    16 => 
    array (
    'label' => 'Russian', 
    'value' => 'ru', 
), 
    17 => 
    array (
    'label' => 'Spanish', 
    'value' => 'es', 
), 
    18 => 
    array (
    'label' => 'Tamil', 
    'value' => 'ta', 
), 
    19 => 
    array (
    'label' => 'Telugu', 
    'value' => 'te', 
), 
    20 => 
    array (
    'label' => 'Urdu', 
    'value' => 'ur', 
), 
)