无法正确检索映像名称

  • 本文关键字:映像 检索 php
  • 更新时间 :
  • 英文 :


我试图检索图像数组。所有图像都显示正常。但是,名称为"image_01"和"image_02"的图像正在检索为image_1和image_2。这是因为我使用的"str_replace"。有人可以告诉我为什么会这样吗?

$image=$policy->gallery;     
$image = trim($image,'*');
$temp = explode('*',$image );
echo $temp[5];
// $temp = array_filter($temp);
foreach($temp as $image)
{
  $images[]=base_url()."images/park_photos/".trim( str_replace( array('['*']') ,"" ,$image ) );
  //echo trim( str_replace( array('['*']') ,"" ,$image ));
}
foreach($images as $image)
{
  echo "<img src='{$image}' style='width:100px; height:100px; display:block; float:left;' />";
}
?>

为了修复它,您需要替换

$images[]=base_url()."images/park_photos/".trim( str_replace( array('['*']') ,"" ,$image ) );

$images[] = base_url() . trim($image);

甚至与

$images[] = base_url() . $image;

发生了什么事情?我想通过这个str_replace您想确保从图片名称中删除*。但是你之前已经这样做了($temp = explode('*',$image );),所以没有必要复制。

现在,为什么0从图片名称中删除?array('['*']')中发生了一些"魔术"。由于引号序列,*字符被解释为乘法。要理解,请尝试这样做:

$a = '['*']';
var_dump($a);
// outputs: int(0)

为什么?PHP 是从上下文中猜测变量类型。在这种情况下,上下文是:将'['乘以']'。由于乘法适用于数字,PHP将两个字符串('['']')转换为整数,特别是零。(阅读更多关于类型杂耍的信息)。
因此,str_replace( array('['*']') ,"" ,$image )等于str_replace( array(0) ,"" ,$image ) - 即"用空字符串替换零。

最新更新