我想知道为什么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];
}
提前致谢
答案 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与自定义回调函数一起使用,例如