我试图检索图像数组。所有图像都显示正常。但是,名称为"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 )
- 即"用空字符串替换零。