我有两个像这样的数组
$slike = Array('artist2-1.jpg', 'artist2-2.jpg', 'artist2-3.jpg', 'artist2-4.jpg');
$slikethumb = Array('artist2-1_thumb.jpg',
'artist2-2_thumb.jpg',
'artist2-3_thumb.jpg',
'artist2-4_thumb.jpg');
当我foreach
两个数组时,我想在视图
echo'<a href='.$slike.'><img src='.$slikethumb.'></a>';
我知道如何foreach
一个数组,但我需要做些什么才能在一个foreach中组合两个数组?
答案 0 :(得分:4)
如果这些数组排序正确且两者都有相同数量的元素:
foreach($slike as $i => $value){
echo'<a href='.$value.'><img src='.$slikethumb[$i].'></a>';
}
答案 1 :(得分:1)
如果数组和数组中的元素数量相同然后排序,
foreach($slikethumb as $key => $val) {
echo '<a href='.$slike[$key].'><img src='.$val.'></a>';
}
答案 2 :(得分:1)
编辑:
考虑到您的related question,您可能需要考虑使用glob
和更具体的模式来扫描您的指南,其中包含以下内容:
$sLike = glob('{0,1,2,3,4,5,6,7,8,9}.jpg',GLOB_BRACE);
//selects all .jpg files with names ending with number.jpg, so no _thumb.jpg files
然后,考虑到这一点并根据您的评论。如何删除文件扩展名:
$sLike = array();//the array from dir scan
$clean = array();
foreach($sLike as $file)
{
$clean[] = substr($file, 0, strpos($file, '.')*-1);//get file name
}
$format = '<a href="%s.jpg"><img src="%1$s_thumb.jpg" /></a>';//output format
foreach($clean as $like)
{
printf($format, $like);
}
或者,使用用于glob
调用的更自由的模式,如果您想使用选项2(每个文件具有不同扩展名的模式):
$sLike = array();//the array from dir scan
$clean = array();
foreach($sLike as $file)
{
$endOffset = strpos($file, '.')*-1;
$clean[] = array(
substr($file, 0, $endOffset),//get file name
substr($file,$endOffset)//get extension, includes the . char!
);
}
$format = '<a href="%s%s"><img src="%1$s_thumb%2$s" /></a>';//output format
foreach($clean as $like)
{
echo vsprintf($format, $like);
}
就是这样......
我要做的只是使用一个阵列。两个图像的基本字符串相同:
$slike=array(
'artist2-1',
'artist2-2',
'artist2-3',
'artist2-4'
);//remove extensions
$format = '<a href="%s.jpg"><img src="%1$s_thumb.jpg" /></a>';//output format
foreach($slike as $like)
{
printf($format, $like);
}
这将为您提供您想要的,而不需要2个数组,因为您可以看到on this codepad。
这种方法的好处:
printf
内部转换为C中的fprintf(stdout, "<your format>", zval*$like);
,速度很快。artist2-%s.jpg"><img src="artist2-%s_thumb.jpg" />
,并且只将数字存储在数组中,但这样做太荒谬了。当然,有一些警告:
选择权在你手中。如果可能发生不同的扩展,您可以将上面的代码更改为:
$slike=array(
array('artist2-1','jpg'),
array('artist2-2','png'),
array('artist2-3','gif'),
array('artist2-4','jpeg'),
);//remove extensions
$format = '<a href="%s.%s"><img src="%1$s_thumb.%2$s" /></a>';//output format
foreach($slike as $like)
{
echo vsprintf($format, $like);
}
正如你所看到的那样on this codepad,它也会像魅力一样
答案 3 :(得分:1)
您可以使用for
循环
for($i = 0; $i< count($slike); $i++)
{
$slike_val = $slike[$i];
$slikethumb_val = $slikethumb[$i];
echo'<a href='.$slike_val.'><img src='.$slikethumb_val.'></a>';
}
答案 4 :(得分:1)
You will try
foreach($slike as $key=>$slike_val)
echo'<a href='.$slike_val.'><img src='.$slikethumb[$key].'></a>';
答案 5 :(得分:0)
foreach ($slike as $key=>$img) {
print '<a href='.$img.'><img src='.$slikethumb[$key].'></a>';
}
或者,如果你想要一个不基于订购的......
foreach ($slike as $key=>$img) {
list($name, $ext)=explode('.', $img);
$thumb=$name . '_thumb.' . $ext;
if (in_array($thumb, $slikethumb)) {
print '<a href='.$img.'><img src='.$thumb.'></a>';
} else {
...?
}
}
答案 6 :(得分:0)
试试这样:
<?php
$slike = array('artist2-1.jpg', 'artist2-2.jpg', 'artist2-3.jpg', 'artist2-4.jpg');
$slikethumb = array('artist2-1_thumb.jpg', 'artist2-2_thumb.jpg', 'artist2-3_thumb.jpg', 'artist2-4_thumb.jpg');
foreach($slike as $key1 => $value1)
{
echo $value1."--------->".$slikethumb[$key1]."<br />";
}
?>