我有一个简单的代码用于粘贴目录中的图像,我已将它们分类为一个数组,但我似乎无法解决的问题是如何使最后一个数组不同。
到目前为止,这是我的代码:
foreach($images as $image){
echo("{image : '$image'}, ");
}
我希望继续打印数组中的单个项目,但是最后我想没有逗号。
任何帮助都会很棒,
谢谢!
答案 0 :(得分:5)
简单。
function doit($image) {
return "{image: '$image'}"
}
$images = array_map('doit',$images);
$images = implode(', ',$images);
答案 1 :(得分:2)
echo "{image : '".implode("'}, {image : '",$images)."'}";
答案 2 :(得分:2)
尝试:
<?php
$buffer = array();
foreach($images as $image){
$buffer[] = "{image : '$image'}";
}
echo implode(', ', $buffer);
答案 3 :(得分:1)
尝试使用密钥和数组的长度:
$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);
答案 4 :(得分:1)
你可以通过do..while
循环来实现这一目标:
$image = current($images);
do {
echo "{image : '$image'}";
} while (($image = next($images) && (print " ,"));
请注意,您必须使用print
而不是echo
,因为echo
不是一个函数。
条件的第二部分仅在第一部分通过时执行,因此只有在存在另一图像时才会打印" ,"
。
如果有可能(即使是最模糊的可能性)你的数组可能包含非空字符串的值,你需要更详细:
} while (
(false !== ($image = next($images)) &&
(print " ,")
);
我不相信这是非常可读的,但是,即使分成多行,所以如果是这种情况,我会采用其他方法之一。
答案 5 :(得分:0)
使用if语句并检查它是否是最后一个并相应地回显,或连接而不回显,在生成后修剪结果,并回显。
答案 6 :(得分:0)
你可以做if和else语句,如果它的最后一个图像没有逗号则打印,如果它不是用逗号打印的话。
答案 7 :(得分:0)
$last = array_pop(array_keys($images));
foreach($images as $key => $image) {
if ($key == $last) {
... last image ,don't output comma
}
}