我有这个简单的for循环来回显一个数组:
for ($i = 0; $i < count($director); $i++) {
echo '<a href="person.php?id='.$director[$i]["id"].'">'.$director[$i]["name"].'</a>';
}
这里的问题是,当数组中有多个元素时,我会在没有任何空格的情况下回显所有内容。我想用逗号分隔每个元素,除了最后一个。
我无法使用implode
所以我正在寻找其他解决方案
答案 0 :(得分:13)
这应该有效。我认为最好只调用count()
一次而不是每次循环迭代。
$count = count($director);
for ($i = 0; $i < $count; $i++) {
echo '<a href="person.php?id='.$director[$i]["id"].'">'.$director[$i]["name"].'</a>';
if ($i < ($count - 1)) {
echo ', ';
}
}
答案 1 :(得分:4)
如果我正确记住PHP语法,这也可能有所帮助:
$str = "";
for ($i = 0; $i < count($director); $i++) {
$str .= '<a href="person.php?id='.$director[$i]["id"].'">'.$director[$i]["name"].'</a>, ';
}
$str = trim($str, ", ");
答案 2 :(得分:3)
更好的解决方案是完全避免循环。为了清楚起见,我忽略了构建链接。请注意,我不相信无法使用内爆是一个条件。我相信这是一个简单的陈述,“我无法看到如何使用内爆使这项工作,所以我这样做了。”
$last_entry = array_pop($director);
if(count($director) > 0) {
echo implode(", ", $director) . " and " . $last_entry;
} else {
echo $last_entry;
}
答案 3 :(得分:2)
我的首选方法:
$links = [];
for ($i = 0; $i < count($director); $i++) {
$links[] = '<a href="person.php?id='.$director[$i]["id"].'">' .
$director[$i]["name"] . '</a>';
}
echo implode(', ', $links);
或
$output = "";
for ($i = 0; $i < count($director); $i++) {
if ($output) {
$output .= ", ";
}
$output .= '<a href="person.php?id='.$director[$i]["id"].'">' .
$director[$i]["name"].'</a>';
}
echo $output;
答案 4 :(得分:1)
for ( $i=0 ; $i < count($arr)-1 ; $i++ )
{
echo ( $arr[$i]."," );
}
echo ( $arr[count($arr)-1] );
答案 5 :(得分:0)
$number = count($director);
for ($i = 0; $i < $number; $i++) {
echo '<a href="person.php?id='.$director[$i]["id"].'">'.$director[$i]["name"].'</a>';
if($i < $number - 1){
echo ', ';
}
}
哎呀,我没有看到Tom Haigh的回复,我们几乎一样来了。
答案 6 :(得分:0)
这样的事情怎么样?您可能希望将“count($ director)”的结果存储在循环外部的变量中,这样您就不必浪费资源在每次循环运行时重新计算它。
for($i=0; $i<count($director);$i++){
echo '<a href="person.php?id='.$director[$i]["id"].'">'.$director[$i]["name"].'</a>';
if($i!=count($director)-1){echo ',';}
}
答案 7 :(得分:0)
好吧,foreach
包含for
: - )
foreach ($director as $key => $person) {
if ($key !== 0) echo ', ';
echo '<a href="person.php?id='.urlencode($person['id']).'">'.$person['name'].'</a>';
}
答案 8 :(得分:0)
// RENAMED $director to $directors
$links = '';
foreach ($directors AS $director) {
$links .= "<a href=\"person.php?id={director['id']}\">{$director['name']}</a>";
if (true !== empty($links)) {
$links .= ', ';
}
}
echo $links;
答案 9 :(得分:0)
foreach ($strings as $string){
$superstring .= $string . ', ';
}
$echostring = substr_replace($superstring ,"",-2);
echo $echostring;
答案 10 :(得分:0)
这是我的2行解决方案
// Create your Array
$cities = Array("Rome", "Florence", "Venice");
// implode them
$list = trim(implode (", ", $cities)) ;
// remove last comma
$list = substr ( $list,0 ,strlen( $list ) );
//check result
die ($list);
答案 11 :(得分:-1)
$ count = 1;
for($ i = 0; $ i&lt; count($ director); $ i ++){
if($ count!= 1){
回声&#39; ,&#39;;
}
echo&#39;。$ director [$ i] [&#34; name&#34;]。&#39;&#39 ;;
$计数++;
}