Vikram Anand Bhushan
Vikram Anand Bhushan

Reputation: 4886

How to get the position of the string in an array

I want to know why array_search() is not able to get the position of the string in the following array

MY Code

$row1['infopropiedades'] ="Dirección<>#Fotos<>SALTEST.ANUNCIO.IMAGENES.IMAGEN.IMAGEN_URL#Fotos Description<>SALTEST.ANUNCIO.DESCRIPCION#Map<>#Youtube URL<>#Titulo<>SALTEST.ANUNCIO.TITULO#Descripción<>SALTEST.ANUNCIO.DESCRIPCION#Detalles específicos<>#Telefono<>SALTEST.ANUNCIO.TELEFONO#Celular<>SALTEST.ANUNCIO.TELEFONO#Terreno<>SALTEST.ANUNCIO.TERRENO#Construcción<>SALTEST.ANUNCIO.CONSTRUCCION#Venta<>SALTEST.ANUNCIO.MONEDA#Alquiler<>";

$x= explode("#",$row1['infopropiedades']);
        print_r($x);
        echo $key = array_search('Fotos Description', $x);
        if($key!=0)
        {
        $v = explode('<>',$x[$key]);
        echo $Fotos_Description = $v[1];
        }

Thanks in advance

Upvotes: 0

Views: 82

Answers (4)

Devon Bessemer
Devon Bessemer

Reputation: 35337

preg_grep was made for searching arrays and will return the results in an array. A combination of key() and preg_grep() will return the key you are looking for.

echo $key = key(preg_grep("/^Fotos Description.*/", $x));

As others pointed out, array_search only matches if the value is equal.

Upvotes: 2

jenschude
jenschude

Reputation: 317

Because array_search just searches for an exact match. So you have to iterate over the whole array and check if the value has this string

or you could use array_filter with a custom callback function for example

Upvotes: 1

Hanky Panky
Hanky Panky

Reputation: 46900

Since your needle is only a part of the whole haystack that each array element contains, array_search won't work. You can loop through all the values and find what you are looking for

   foreach($x as $key=>$haystack)
   {
       if(stristr($haystack,'Fotos Description')!==FALSE)
       {
           $v = explode('<>',$haystack);
            echo $Fotos_Description = $v[1];   
       }
   }

Fiddle

Upvotes: 1

AbraCadaver
AbraCadaver

Reputation: 78994

array_search() is looking for the exact string not a partial match. Here is a quick way to get it:

preg_match('/#Fotos Description<>([^#]+)#/', $row1['infopropiedades'], $v);
echo $Fotos_Description = $v[1];

Upvotes: 2

Related Questions