ivobarbosa Posted July 17, 2012 at 11:49 AM Report #468989 Posted July 17, 2012 at 11:49 AM (edited) Boas amigos, estou a tentar fazer uma coisa e não estou a conseguir, estou a fazer uma query em Joomla, e da query obtenho um array mutidemsional e quero eliminar arrays repetidos. Tentei com array_unique mas não consegui. neste momento tenho o seguinte código: $db =& JFactory::getDBO(); $query2 = " SELECT groups_id, groups_name, groups_members FROM #__docman_groups WHERE groups_id <> 0 AND groups_id <> 45 AND groups_id <> 46 ORDER BY groups_id;"; $db->setQuery($query2); $linhas = $db->loadAssocList(); $groups_members_s_repetidos = array_unique($linhas); foreach($linhas as $linha) { $groups_id = $linha['groups_id']; $groups_name = $linha['groups_name']; $groups_members = $linha['groups_members']; //echo 'groups_id - '.$groups_id.'<br>'; //echo 'groups_name - '.$groups_name.'<br>'; //echo 'groups_members - '.$groups_members.'<br>'; } //eliminar duplicados print_r($groups_members_s_repetidos); echo 'Conta = '.count($linhas).'<br>'; Alguem que perceba que me possa ajudar? Obrigado. Edited July 17, 2012 at 11:53 AM by ivobarbosa Melhores Cumprimentos, Ivo Barbosa
HappyHippyHippo Posted July 17, 2012 at 12:14 PM Report #468991 Posted July 17, 2012 at 12:14 PM usa a palavra reservada DISTINCT SELECT DISTINCT groups_id, groups_name, groups_members FROM #__docman_groups WHERE groups_id <> 0 AND groups_id <> 45 AND groups_id <> 46 ORDER BY groups_id; IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
ivobarbosa Posted July 19, 2012 at 01:36 PM Author Report #469245 Posted July 19, 2012 at 01:36 PM usa a palavra reservada DISTINCT SELECT DISTINCT groups_id, groups_name, groups_members FROM #__docman_groups WHERE groups_id <> 0 AND groups_id <> 45 AND groups_id <> 46 ORDER BY groups_id; Isso já tinha testado amigo, mas não funciona. Porque no ciclo foreach vou buscar a linha que quero e pelo indice do array. por exemplo foreach($linhas as $linha) { $ID = $linha[0]; $Nome = $linha[1]; $GrupoIDS = $linha[2]; //echo 'Nome - '.$Nome.'<br>'; echo 'GrupoIDS - '.$GrupoIDS.'<br>'; } e onde obtenho algo do genero: GrupoIDS - 4139,4140,4144,4170,4187,4197,4224,4231,4407,4484,4507,4754,4765,4778,4814,4879,4881,4916,4945,5040,5116,5244,5282,5308 GrupoIDS - 4139,4140,4144,4167,4205,4343,4370,4504,4531,4533,4697,4795,4840,4923,5360 GrupoIDS - 4139,4140,4143,4144,4153,4198,4325,4373,4436,4437,4480,4515,4548,4709,4735,4802,4821,4830,4952,4980,5104,5184,5215,5252,5313 GrupoIDS - 4139,4140,4144,4160,4293,4301,4320,4381,4556,4692,4713,5493,4888,4971,5181,5362,5417 GrupoIDS - 4139,4140,4144,4147,4199,4202,4204,4230,4352,4479,4519,4559,4568,4619,4639,4761,4779,4781,4787,4801,4825,4835,4887,4993,5023,5031,5032,5034,5050,5091,5102,5129,5161,5175,5181,5182,5193,5205,5260,5288,5355,5372,5375 GrupoIDS - 4139,4140,4144,4145,4291,4430,4455,4482,4510,4539,4575,4600,4660,4691,4713,4837,4859,4874,4876,4938,4993,5063,5097,5135,5149,5179,5181,5193,5194,5225,5296 GrupoIDS - 4139,4140,4144,4169,4182,4206,4225,4414,4465,4477,4485,4499,4615,4628,4714,4762,4796,4803,4826,4885,4898,4932,4948,4970,5008,5071,5117,5253,5295,5341 GrupoIDS - 4139,4140,4144,4184,4256,4266,4278,4326,4383,4512,4527,4597,4699,4829,4832,4838,4848,4853,4901,4931,4957,4984,5003,5042,5100,5151,5229,5299,5305,5314,5323,5389 GrupoIDS - 4139,4140,4144,4213,4310,4401,4409,4469,4492,4632,4668,4715,4719,4720,4744,4831,4847,4885,5004,5010,5026,5090,5219,5237,5306,5368,5373,5397,5408 GrupoIDS - 4139,4140,4144,4244,4251,4293,4301,4399,4421,4425,4489,4627,4702,4711,4713,4880,4921,5088,5181 GrupoIDS - 4139,4140,4144,4155,4162,4240,4264,4269,4395,4410,4443,4447,4449,4451,4503,4586,4599,4635,4662,4717,4861,4905,4937,4963,4997,5043,5038,5080,5093,5153,5160,5286,5337,5377,5383 GrupoIDS - 4139,4140,4144,4183,4195,4213,4282,4308,4437,4548,4564,4586,4595,4630,4633,4851,4906,4952,4956,4985,5075,5084,5339 GrupoIDS - 4139,4140,4144,4185,4193,4242,4263,4319,4376,4434,4573,4586,4608,4611,4631,4649,4663,4897,4913,4929,4973,4977,5002,5307,5349,5353,5420,5120 GrupoIDS - 4139,4140,4144,4160,4178,4283,4298,4437,4556,4641,4715,4736,4811,4813,4991,5090,5121,5271,5322,5382 GrupoIDS - 4139,4140,4144,4250,4298,4312,4368,4405,4474,4486,4511,4665,4708,4759,4789,4824,4865,4969,5108,5137,5222 GrupoIDS - 4139,4140,4144,4194,4233,4246,4292,4313,4327,4331,4374,4391,4392,4442,4490,4493,4532,4549,4555,4626,4679,4749,4791,4975,4989,5031,5034,5050,5057,5146,5169,5171,5199,5200,5226,5300,5332,5354,5386 GrupoIDS - 4139,4140,4144,4170,4196,4211,4220,4284,4296,4344,4345,4420,4424,4435,4466,4501,4514,4621,4664,4738,4850,4903,4917,4919,4968,5113,5148,5176,5269,5302,5308,5359,5395 GrupoIDS - 4139,4140,4144,4175,4177,4189,4289,4362,4389,4459,4463,4561,4763,4822,4926,4981,4992,5127,5142,5167,5170,5251,5306,5382 GrupoIDS - 4139,4140,4144,4161,4201,4208,4245,4298,4359,4477,4574,4602,4731,4742,4813,4834,4839,4843,4878,4951,4991,5015,5072,5105,5166,5181,5224,5306,5324,5326,5403 GrupoIDS - 4139,4140,4144,5017,5077,5211,5283,5361,5374,5380,5387 e quero juntar esses ids todos numa unica string e eliminar os duplicados, por exemplo os os IDS 4139,4140 aparecem muitas vezes repetidos. Percebeste? Obrigado Melhores Cumprimentos, Ivo Barbosa
HappyHippyHippo Posted July 19, 2012 at 03:22 PM Report #469256 Posted July 19, 2012 at 03:22 PM (edited) mas que informação tens tu afinal no campo 'groups_id' ?? porque se for um campo único numérico o código que apresentas não dá esse output ... Edited July 19, 2012 at 03:22 PM by HappyHippyHippo IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
ivobarbosa Posted July 19, 2012 at 03:32 PM Author Report #469258 Posted July 19, 2012 at 03:32 PM mas que informação tens tu afinal no campo 'groups_id' ?? porque se for um campo único numérico o código que apresentas não dá esse output ... é uma string com esses ids separados por virgula. e como são varias linhas, tenho que fazer um clico para ir buscar todos os registos que a query dá, depois preciso de juntar esses registos todos numa só linha e apagar os repetidos. Com esses ids vou pegar neles, e vou obter informação de cada utilizador que corresponde a um id desses. percebes? Melhores Cumprimentos, Ivo Barbosa
HappyHippyHippo Posted July 19, 2012 at 03:53 PM Report #469261 Posted July 19, 2012 at 03:53 PM (edited) é uma string com esses ids separados por virgula. ok, o que tens então é uma salgalhada ... ok. e como são varias linhas, tenho que fazer um clico para ir buscar todos os registos que a query dá, depois preciso de juntar esses registos todos numa só linha e apagar os repetidos. o melhor não é ter tudo numa string e retirar o repetidos, mas ter tudo num array. deverás ter algo do genero $linhas = array_unique(explode(',',implode(',', $linhas))); // prontos ... tens na variavel $linhas os ids não repetidos ... Com esses ids vou pegar neles, e vou obter informação de cada utilizador que corresponde a um id desses. percebes? nem quero saber ... PS : notei agora que o array $linhas é multidimensional e so te interessa a terceira coluna $linhas = array_unique(explode(',',array_reduce($linhas, function($result, $item) { if ($result != '') $result .= ','; return $result .= $item[3]; }))); // agora sim Edited July 19, 2012 at 03:59 PM by HappyHippyHippo 1 Report IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
ivobarbosa Posted July 19, 2012 at 03:59 PM Author Report #469262 Posted July 19, 2012 at 03:59 PM ok, o que tens então é uma salgalhada ... ok. o melhor não é ter tudo numa string e retirar o repetidos, mas ter tudo num array. deverás ter algo do genero $linhas = array_unique(explode(',',implode(',', $linhas))); // prontos ... tens na variavel $linhas os ids não repetidos ... nem quero saber ... Acho que isto não vai funcionar, porque o $linhas já é um array onde o array tem varios campos. Melhores Cumprimentos, Ivo Barbosa
HappyHippyHippo Posted July 19, 2012 at 04:00 PM Report #469264 Posted July 19, 2012 at 04:00 PM Acho que isto não vai funcionar, porque o $linhas já é um array onde o array tem varios campos. já corrigi IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
ivobarbosa Posted July 19, 2012 at 04:05 PM Author Report #469266 Posted July 19, 2012 at 04:05 PM já corrigi está a dar erro de sintaxe deixa ver o que falta. já corrigi está a dar erro de sintaxe deixa ver o que falta. já corrigi Undefined offset: 3 Melhores Cumprimentos, Ivo Barbosa
HappyHippyHippo Posted July 19, 2012 at 04:07 PM Report #469268 Posted July 19, 2012 at 04:07 PM (edited) é dois ... $GrupoIDS = $linha[2]; $linhas = array_unique(explode(',',array_reduce($linhas, function($result, $item) { if ($result != '') $result .= ','; return $result .= $item[2]; }))); // agora sim Edited July 19, 2012 at 04:07 PM by HappyHippyHippo 1 Report IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
ivobarbosa Posted July 19, 2012 at 04:13 PM Author Report #469269 Posted July 19, 2012 at 04:13 PM é dois ... $linhas = array_unique(explode(',',array_reduce($linhas, function($result, $item) { if ($result != '') $result .= ','; return $result .= $item[2]; }))); // agora sim Já não dá erro, contudo não percebi metade do que fizeste. Sou mesmo noob. visto que o linhas ainda continua a ser um array, como posso fazer para pegar nesses ids todos para fazer um função para enviar mail por exemplo. Sei fazer funções, mas n sei bem como pego o valor dos arrays, mete-me confusão os arrays, tenho que estudar melhor isso. Melhores Cumprimentos, Ivo Barbosa
HappyHippyHippo Posted July 19, 2012 at 04:49 PM Report #469270 Posted July 19, 2012 at 04:49 PM não tenho muito tempo para explicar exatamente o que fiz ... ve na documentação array_reduce array_unique explode se mesmo depois disso não percebeste algum ponto então eu explico melhor como posso fazer para pegar nesses ids todos para fazer um função para enviar mail por exemplo. como a variavel $linhas tens os id's é só passar isso ara um foreach ... foreach($linhas as $id) { // faz o que tens a fazer } IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now