I just ran a test of your code on my server.
First I used this code to generate two arrays, 1 to search in and 1 of words to search for.
<?php
for($i=0;$i<10000;$i++) {
$word = '';
for($j=0;$j<8;$j++) {
$word .= chr(rand(65,90));
} //end for
$myArray[] = $word;
if($i%10 == 0) {
$words[] = $word;
$word = '';
for($j=0;$j<8;$j++) {
$word .= chr(rand(65,90));
} //end for
$words[] = $word;
} //end if
} //end for
?>
As you can see this code generate a list of 10,000 words to search in and a list of 2,000 words to search for. 1,000 of the words to search for would definately be present in the search list and 1,000 should not be present. (In checking the file after each run I confirmed that 1,000 words were not found in the array each time).
I ran 20 tests and the results were that list generation took about 0.3 seconds, 2,000 searches took about 6 seconds and the average length of each search was about 0.003 seconds.
This should be fast enough for any application.
Besides that I don't think you'll get any faster by writting in php since built in function should always be faster then scripted ones.