如何获取字符串在数组中的位置

时间:2015-04-08 15:49:44

标签: php arrays

我想知道为什么array_search()无法获取以下数组中字符串的位置

我的代码

$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];
        }

提前致谢

4 个答案:

答案 0 :(得分:2)

array_search()正在寻找确切的字符串而不是部分匹配。这是一个快速获得它的方法:

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

答案 1 :(得分:2)

preg_grep用于搜索数组,并将结果返回到数组中。 key()preg_grep()的组合将返回您要查找的密钥。

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

正如其他人所指出的,如果值相等,array_search只会匹配。

答案 2 :(得分:1)

由于您的needle只是每个数组元素包含的整个干草堆的一部分,array_search无法正常工作。您可以遍历所有值并找到您要查找的内容

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

<强> Fiddle

答案 3 :(得分:1)

因为array_search只搜索完全匹配。因此,您必须迭代整个数组并检查该值是否具有此字符串

或者您可以将array_filter与自定义回调函数一起使用,例如