I have dome almost the same

$input = 'Today is a very beautiful day and the sun is shining';

$output = array();
$words = explode(' ',$input);

$cur_pos = 0;
foreach($words as $word) {
        $output[$word] .= ','.$cur_pos;
    } else {
        $output[$word] = $cur_pos;
    $cur_pos += strlen($word) + 1;
unset ($word);

but i thought if there is some better way. I also tried
Marco's example and adjust it a little bit to get the same
results. And here is some benchmark i have.

with this example i get  0.0024310350418091
and with Marco's i get 0.0034389495849609s

So using two array is faster anyway. Probably of explode

Monday, December 16, 2002, 6:36:37 PM, you wrote:

>> For example i have some words:
>> Today is very beautiful day and sun is shining
>> What i want to get from this is array
>> words
>>  [Today] => 0
>>  [Is] => 6,30
>>  [Very] => 8
>>  [beautiful] => 12
>>  ......
>> Can somebody please help me with this. Those nubers are
>> position of special word in above sentence. If word repeates
>> i want to have both positions saved in same row like word is.
>> I tried something but i think it's to lame.

JWH> Well you could've at least shown us what you had so far instead of
JWH> letting us solve the problem for you:

JWH> $string = "Today is a very beautiful day and the sun is shining";

JWH> $words = explode(" ",$string);
JWH> $pos = 0;

JWH> foreach($words as $word)
JWH> {
JWH>         if(isset($w[$word]))
JWH>         { $w[$word] .= ",$pos"; }
JWH>         else
JWH>         { $w[$word] = $pos; }

JWH>         $pos += strlen($word) + 1;
JWH> }

JWH> print_r($w);

JWH> ---John W. Holmes...

JWH> PHP Architect - A monthly magazine for PHP Professionals. Get your copy
JWH> today. http://www.phparch.com/

PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to