PHP最后一个数组关键问题

时间:2011-06-07 17:31:43

标签: php

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

到目前为止,这是我的代码:

foreach($images as $image){
echo("{image : '$image'}, ");
}

我希望继续打印数组中的单个项目,但是最后我想没有逗号

任何帮助都会很棒,

谢谢!

8 个答案:

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