PHP最后一个数组密钥问题


PHP Last Array Key Issue

我有一个从目录粘贴图像的简单代码,我已经将它们排序到一个数组中,但我似乎无法解决的问题是如何使最后一个数组不同。

这是我迄今为止的代码:

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
   }
}