所以我有一个逗号分隔值的字符串:
$accounts = "1,2,3,4,5,6";
我想扭转那个顺序。所以我写了这个:
$accountsrev = implode(',',rsort(explode(',',$accounts)));
基本上我转换为数组,反转数组,并将其内爆回字符串。那有什么不对?
我遇到了很多这样的错误:
严格标准:只应在第121行的/home/username/public_html/file.php中通过引用传递变量
警告:implode():第121行/home/username/public_html/file.php中传递的参数无效
现在我想知道我构建$ accounts变量的方式是否错误。我从数据库中提取7行,然后在while循环中构建$ accounts变量。 id
是数据库中的整数:
$accounts = '';
$i = 1;
while ($data = $getdata->fetch(PDO::FETCH_ASSOC)) {
if ($i < 7) {
$accounts .= $data['id'].',';
} else {
$accounts .= $data['id'];
}
$i++;
}
我使$ accounts变量的方式是否不会产生字符串?
答案 0 :(得分:2)
这只是告诉你你做错了什么的事情:
$array = [1,2,3,4];
rsort($array);
//$array is sorted.
然而:
rsort(array_filter($array));
//Array filter returned a copy of the original array so $array is neither sorted nor filtered.
你需要这样做:
$accounts = '';
while ($data = $getdata->fetch(PDO::FETCH_ASSOC)) {
$accounts .= $data['id'].',';
}
$accountsrev = explode(',',rtrim($accounts,","));
rsort($accountsrev);
$accountsrev = implode(',',$accountsrev);//accountsrev is sorted here
答案 1 :(得分:1)
<?php
$accounts = '';
$i = 0;
while ($data = $getdata->fetch(PDO::FETCH_ASSOC)) {
$i++;
if($i == 1){
$accounts = $data['id'];
} else {
$accounts .= $data['id'].',';
}
}
$accountsrev = explode(',',$accounts); // explode it as make array
rsort($accountsrev); // then use rsort which sort array reverse
$accountsrev = implode(',',$accountsrev); // again implode it
echo $accountsrev;
?>
然后输出
6,5,4,3,2,1
或者您可以使用array_reverse ()
功能代替rsort
echo $accountsrev = implode(',',array_reverse(explode(',',$accounts)));
然后输出
6,5,4,3,2,1
答案 2 :(得分:0)
快速简便:
$accounts = '1,2,3,4,5,6';
echo $accountsrev = implode(',',array_reverse(explode(',',$accounts)));