Php Strict Standards错误,尝试将字符串反转为数组
因此,我有一个字符串,其值以逗号分隔:Php Strict Standards错误,尝试将字符串反转为数组,php,arrays,Php,Arrays,因此,我有一个字符串,其值以逗号分隔: $accounts = "1,2,3,4,5,6"; 我想颠倒顺序。所以我写了这个: $accountsrev = implode(',',rsort(explode(',',$accounts))); 基本上,我转换成一个数组,反转数组,并将其内爆成一个字符串。怎么了 我遇到了很多这样的错误: 严格标准:第121行的/home/username/public_html/file.php中只能通过引用传递变量 警告:内爆():在第1
$accounts = "1,2,3,4,5,6";
我想颠倒顺序。所以我写了这个:
$accountsrev = implode(',',rsort(explode(',',$accounts)));
基本上,我转换成一个数组,反转数组,并将其内爆成一个字符串。怎么了
我遇到了很多这样的错误:
严格标准:第121行的/home/username/public_html/file.php中只能通过引用传递变量
警告:内爆():在第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='';
$i=1;
而($data=$getdata->fetch(PDO::fetch_ASSOC)){
如果($i<7){
$accounts.=$data['id'.',';
}否则{
$accounts.=$data['id'];
}
$i++;
}
我使$accounts变量不产生字符串的方法吗?这只是告诉您您正在做完全错误的事情:
$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
这只是告诉你你在做一些完全错误的事情:
$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
或者您可以使用array\u reverse()
函数代替rsort
echo $accountsrev = implode(',',array_reverse(explode(',',$accounts)));
然后输出将是
6,5,4,3,2,1
6,5,4,3,2,1
或者您可以使用array\u reverse()
函数代替rsort
echo $accountsrev = implode(',',array_reverse(explode(',',$accounts)));
然后输出将是
6,5,4,3,2,1
6,5,4,3,2,1
快速简便:
$accounts = '1,2,3,4,5,6';
echo $accountsrev = implode(',',array_reverse(explode(',',$accounts)));
快速简便:
$accounts = '1,2,3,4,5,6';
echo $accountsrev = implode(',',array_reverse(explode(',',$accounts)));
如果您的第一行与此处显示的内容非常相似,那么您应该首先修复:
$accounts=1,2,3,4,5,6代码>不是字符串,$accounts=“1,2,3,4,5,6”代码>现在是了。我的错,那是个打字错误。我从数据库中调用7行,然后在while循环中构建字符串。因此,我的代码实际上并不包含该部分。如果您的第一行与此处显示的内容非常相似,那么您应该首先修复该部分:$accounts=1,2,3,4,5,6代码>不是字符串,$accounts=“1,2,3,4,5,6”代码>现在是了。我的错,那是个打字错误。我从数据库中调用7行,然后在while循环中构建字符串。因此,我的代码实际上并不包含这一部分。+1不仅提供了代码的固定版本,而且还解释了OPs代码不起作用的原因。accounts变量是一个拼写错误,实际上不在我的代码中。我使用while循环和数据库中的数据创建字符串。你能阅读编辑后的问题吗?@s1h4d0w我不明白为什么这会成为一个问题,但请检查我的更新答案nevertheless@apokryfos所以问题是我不能组合像内爆(',',rsort(explode(',',$accounts))代码>?我仍然无法正确理解是什么破坏了它。@s1h4d0w和所有相关函数都要求通过引用传递参数(如果您检查文档,这就是&
的意思)。只有变量可以通过引用传递(如错误所示)<代码>分解(“,”,$accounts)
不是一个变量,它是一个函数调用$accounts
是一个变量+1,它不仅提供了代码的固定版本,而且还解释了OPs代码不起作用的原因。accounts变量是一个输入错误,实际上不在我的代码中。我使用while循环和数据库中的数据创建字符串。你能阅读编辑后的问题吗?@s1h4d0w我不明白为什么这会成为一个问题,但请检查我的更新答案nevertheless@apokryfos所以问题是我不能组合像内爆(',',rsort(explode(',',$accounts))代码>?我仍然无法正确理解是什么破坏了它。@s1h4d0w和所有相关函数都要求通过引用传递参数(如果您检查文档,这就是&
的意思)。只有变量可以通过引用传递(如错误所示)<代码>分解(“,”,$accounts)
不是一个变量,它是一个函数调用<代码>$accounts
是一个变量accounts变量是一个输入错误,实际上不在我的代码中。我使用while循环和数据库中的数据创建字符串。你能看一下编辑后的问题吗?谢谢你的帮助@apokryfos只是稍微快了一点,解释说我不能那样使用rsort
。没问题,我仍然非常感谢你花时间回答!accounts变量是一个输入错误,实际上不在我的代码中。我使用while循环和数据库中的数据创建字符串。你能看一下编辑后的问题吗?谢谢你的帮助@apokryfos只是稍微快了一点,解释说我不能那样使用rsort
。没问题,我仍然非常感谢你花时间回答!