2017-04-10 5 views
1

これは単純なはずですが、期待した結果が得られません。ブラウザには、配列内のすべての要素がリストされます( "!"演算子が含まれている場合)か、要素がリストされません( "!"演算子が含まれていない場合)。私は、1つの要素を除くすべての要素をリストしたり、その1つの要素のみをリストしたりしようとしています。私はいずれかの方法で働くことができません。連想配列以外のすべてのキーを一覧表示する

$features = array(
    'winter' => 'Beautiful arrangements for any occasion.', 
    'spring' => 'It must be spring! Delicate daffodils are here.', 
    'summer' => "It's summer, and we're in the pink.", 
    'autumn' => "Summer's over, but our flowers are still a riot of colors." 
    ); 

    <h1>Labeling Array Elements</h1> 
    <?php 
    foreach ($features as $feature) { 
    if(array_key_exists('autumn', $features)) { 
    continue; 
    } 
    echo "<p>$feature</p>"; 
    }  
    ?> 
+0

しかし、ロジックは、インデックス付きで動作しますアレイ。私のフィドル:main.xfiddle.com/de5f2f17/index_array_conditional.php。 <?php。$ flowers = array( 'チューリップ'、 'バラ'、 '水仙'、 'ラン'、 'デイジー'); ?> <?php foreach($ flowers AS $ flower){if($ flower == 'daffodils'){ ; } echo '

  • '。 ucfirst($ flower) '
  • '; if($ flower == 'orchids') {ブレーク; }}?> – Totsy

    答えて

    2

    あなたはそれが配列に存在しているという理由だけで、ループ内でcontinueを行うと、それは最初の反復で停止します。それはいつも真実です。

    代わりに、あなたはこのような何かをする必要があります。

    $features = array(
        'winter' => 'Beautiful arrangements for any occasion.', 
        'autumn' => "Summer's over, but our flowers are still a riot of colors.", 
        'spring' => 'It must be spring! Delicate daffodils are here.', 
        'summer' => "It's summer, and we're in the pink.", 
    ); 
    
    print_r(array_filter($features, function ($key) { 
        return $key != 'autumn'; 
    }, ARRAY_FILTER_USE_KEY)); 
    

    ライブデモ:あなたも、このアプローチのためにarray_filter使用しても

    foreach ($features as $season => $description) { 
        if ($season == 'autumn') { 
         continue; 
        } 
        echo $description; 
    } 
    
    関連する問題