join()PHP函数删除重复的值?

how are you doing? When I use the join() function with duplicated values in an array, the join function returns the array but removing duplicates and I dont want that!

Example:

$array= array(1, 2, 2, 2);
$res = join(',', $array);

I get this:

1,2

but I want the result to be:

1,2,2,2

Hope someone can help me! Thank you

dongliaoqiang8524
dongliaoqiang8524 toolong
8 年多之前 回复
dsbtwy1329
dsbtwy1329 toolong
8 年多之前 回复

2个回答



你说这是你的代码:</ p>

  while($ coordenada = mysql_fetch_assoc(  $ resultado)){
$ arrayX [$ coordenada ['ARTICULO']] = $ coordenada ['ARTICULO'];

$ arrayY [$ coordenada ['CANTIDAD']] = $ coordenada ['CANTIDAD'];

}
</ code> </ pre>

在这种情况下,您不会像您想象的那样填充数组。 你的代码是这样做的:</ p>

  $ arrayY [1] = 1; 
$ arrayY [2] = 2;
$ arrayY [2] = 2;
$ arrayY [2] = 2;
</ code> </ pre>

因此只包含2个值。 如果你想要重复,请将你的代码更改为:</ p>

  while($ coordenada = mysql_fetch_assoc($ resultado)){
$ arrayX [] = $ coordenada ['ARTICULO' ]。

$ arrayY [] = $ coordenada ['CANTIDAD'];

}
</ code> </ pre>
</ div>

展开原文

原文

You say this is your code:

while ($coordenada = mysql_fetch_assoc($resultado)) {
    $arrayX[$coordenada['ARTICULO']] = $coordenada['ARTICULO'];       
    $arrayY[$coordenada['CANTIDAD']] = $coordenada['CANTIDAD']; 
}

In which case, you are not populating the arrays like you think. Your code is doing this:

$arrayY[1] = 1;
$arrayY[2] = 2;
$arrayY[2] = 2;
$arrayY[2] = 2;

So only contains 2 values. If you want duplicates, change your code to this:

while ($coordenada = mysql_fetch_assoc($resultado)) {
    $arrayX[] = $coordenada['ARTICULO'];          
    $arrayY[] = $coordenada['CANTIDAD']; 
}

dragonsun00000
dragonsun00000 几乎已经解决了! 我不知道为什么我这样做! thx和sry,因为问题最终成为了另一件事! 感谢nathan josiah以及帮助!
8 年多之前 回复



使用 implode implode(',',$ array)</ code>即使join只是implode的别名,它也是正确使用的函数</ p>
</ div>

展开原文

原文

use implode: implode(',', $array) even though join is just an alias of implode, it is the proper function to use

duankan8739
duankan8739 我按预期得到1,2,2,2但由于某种原因,当我在循环中创建数组时,arrayY没有保存所有值。 它不是join()或implode()函数的问题:P我将检查可能发生的事情。 谢谢!
8 年多之前 回复
doumouyi4039
doumouyi4039 当你执行这个echo implode(',',array(1,2,2,2))时会发生什么?
8 年多之前 回复
drfm55597
drfm55597 arrayX是正确生成的...具有重复值的那个是arrayY ...出于某种原因避免重复的值。 我回应了$ coordenada ['CANTIDAD'],我得到了所有的值1,2,2,2。 其奇怪的原因是没有保存完整的阵列,只能节省1,2
8 年多之前 回复
drrrdo0802
drrrdo0802 too long
8 年多之前 回复
dongyu4908
dongyu4908 它可能是$ arrayX [$ coordenada ['ARTICULO']]被覆盖。 如果$ coordenada ['ARTICULO']具有相同的值不止一次,它只会保留$ coordenada ['ARTICULO']的最后一个值
8 年多之前 回复
doumanni3501
doumanni3501 我创建这样的数组:while($ coordenada = mysql_fetch_assoc($ resultado)){$ arrayX [$ coordenada ['ARTICULO']] = $ coordenada ['ARTICULO']; $ arrayY [$ coordenada ['CANTIDAD']] = $ coordenada ['CANTIDAD']; } arrayY是具有重复值的那个...你是说我避免重复的值这样做吗?
8 年多之前 回复
dongyu2047
dongyu2047 加入只是一个别名。
8 年多之前 回复
dongzhong5756
dongzhong5756 使用你发布的确切数组,除了implode将给你想要的结果。 你是如何创建阵列的? 你有可能覆盖值或通过array_unique传递它吗?
8 年多之前 回复
dqellle310167
dqellle310167 我在发布之前尝试使用implode()但是我得到了与join()函数相同的结果
8 年多之前 回复
douding7189
douding7189 implode()是处理此问题的正确方法。
8 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐