2017-09-22 12 views
2

tellよりも良い表示です。別の配列の値としてキーを持つ配列値から抽出する

$first = array(
    3=>"Banana", 
    4=>"Apple", 
    6=>"Lemon", 
    7=>"Pineapple", 
    8=>"Peach" 
); 

$second = array(4,7,8); 

(ご注意:最初のものは連想配列である、それは穴を持つことができます) 結果は

$result = array(
    "Apple", 
    "Pineapple", 
    "Peach" 
); 

どれでもスマートなアイデアすべきですか? ありがとう

+0

最もスマートなアイデアは、PHP [配列関数](http://php.net/manual/en/ref.array.php)のドキュメントを読んでから、その仕事を行うために単純な 'foreach'を使用することです。もちろん、このような質問を[so]に投稿し、他の人があなたの問題を解決するのを待っているよりも、時間がかかりません。 – axiac

答えて

3

ここではarray_intersect_keyarray_fliparray_valuesを使用しています。この単一のライナーで十分です。

array_valuesは、配列の値を返します。

2.array_flipkeysvalues上の配列を反転します。

array_intersect_keyは、2つの入力配列の交差するキーに基づいて配列を返します。

Try this code snippet here

print_r(
    array_values(
     array_intersect_key(
        $first, array_flip($second)))); 
0

単純なforeachループで行います。そしてISSETは()インデックスは、それを読み取ろうとする前に、最初の配列に存在していることを確認します

$first = array(
    3=>"Banana", 
    4=>"Apple", 
    6=>"Lemon", 
    7=>"Pineapple", 
    8=>"Peach" 
); 
$second = array(4,7,8); 
$result = array(); 

foreach($second as $i) 
{ 
    if (isset($first[$i])) $result[] = $first[$i]; 
} 

var_dump($result); 
0

こんにちは、あなたがこの

$最初=配列(

3=>"Banana", 
4=>"Apple", 
6=>"Lemon", 
7=>"Pineapple", 
8=>"Peach" 

)のように使用することができます。

$ second = array(4,7,8);

foreachの($最初$キー=> $ valのような) {

IF(array_search($キー、$秒)=== false)を {

解除($最初の[$キー]); }

}

ますprint_r(最初$)。出口;

関連する問題