-1

次の配列があるとします。「are」という単語を削除するにはどうすればよいですか
(インデックスはランダムになる可能性があるためunset($words[2])、オプションではありません)

$words= array("hi", "how", "are", "you", "doing");
//array_remove("are", $words); <== How to do this in php?
4

3 に答える 3

6

使用array_search():

function array_remove($word, &$array) 
{
    if (($key = array_search('are', $array)) !== false) {
        unset($array[$key]);
    }
}

使用法:

$words = array("hi", "how", "are", "you", "doing");
array_remove('are', $words);

デモ!

于 2013-08-10T23:08:34.183 に答える
2

array_searchを使用してインデックスを検索し、unset を使用して削除できます

if (($index = array_search('are', $words)) !== false) {
unset($words[$index]);
}

array_searchアイテムが見つからない場合は false を返します。

また、「are」の複数のインスタンスを削除したい場合は、array_keysを試すことができます

foreach(array_keys($words,"are") as $index) {
unset($words[$index])
}

これにより、値が「are」の要素が単純に消えますが、この例では、配列にインデックス 2 が含まれなくなります。これにより、インデックスの反復で機能するループで問題が発生する可能性があります。これを削除するには、array_valuesを使用できます

$words = array_values($words);
于 2013-08-10T23:12:29.037 に答える
1

そのための機能が必要な場合、これはコメントの説明とまったく同じです。

function array_remove($needle, & $haystack) {
    foreach ($haystack as $key => $value) {
        if ($value === $needle) {
            unset($haystack[$key]);
            break;
        }
    }
}
$words= array("hi", "how", "are", "you", "doing");
array_remove('are', $words);
echo '<pre>'; print_r($words);

関数で のすべてのインスタンスを削除する場合は、$needleという行を削除するだけbreak;です。

于 2013-08-10T23:15:19.777 に答える