我有一个从目录粘贴图像的简单代码,我已经将它们排序到一个数组中,但我似乎无法解决的问题是如何使最后一个数组不同。
这是我迄今为止的代码:
foreach($images as $image){
echo("{image : '$image'}, ");
}
我希望继续打印数组中的单个项,但在最后一个上,我希望不使用逗号。
任何帮助都会很好,
谢谢!
简单。
function doit($image) {
return "{image: '$image'}"
}
$images = array_map('doit',$images);
$images = implode(', ',$images);
echo "{image : '".implode("'}, {image : '",$images)."'}";
尝试:
<?php
$buffer = array();
foreach($images as $image){
$buffer[] = "{image : '$image'}";
}
echo implode(', ', $buffer);
尝试使用键和数组长度:
$arrLength = count($images);
foreach($images as $key=>$image){
echo("{image : '$image'}");
if($key < $arrLength - 1){ echo ", "; }
}
或者使用array_map
:
function make_array($n)
{
return "{image: '$n'}"
}
$map = array_map("make_array", $images);
$new_array = implode(', ', $map);
您可以使用do..while
循环来吸引人:
$image = current($images);
do {
echo "{image : '$image'}";
} while (($image = next($images) && (print " ,"));
请注意,您必须使用print
而不是echo
,因为echo
并不是一个函数。
条件的第二部分仅在第一部分通过时执行,因此只有在存在其他图像时才会打印" ,"
。
如果您的数组可能包含非空字符串的值(如中所示,甚至是最模糊的可能性),则需要更加详细:
} while (
(false !== ($image = next($images)) &&
(print " ,")
);
然而,我不相信这是非常可读的,甚至分为多行,所以如果是这样的话,我会选择其他方法之一。
使用if语句并检查它是否是最后一个并相应地回显,或者在不回显的情况下进行连接,在生成结果后修剪结果并回显。
您可以执行if和else语句,其中if是最后一个不使用逗号打印的图像,否则如果不使用逗号进行打印。
$last = array_pop(array_keys($images));
foreach($images as $key => $image) {
if ($key == $last) {
... last image ,don't output comma
}
}