Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

stview

Manipulação de arrays

Recommended Posts

Cada dia eu acho uma dúvida neste carrinho de compras ... Estou com problemas para excluir dados do carrinho.

 

Vou usar os dados como exemplo:

PHP

[*]$_SESSION["Prod"]["1"]["ID"] = 1;

[*]$_SESSION["Prod"]["2"]["ID"] = 2;

[*]$_SESSION["Prod"]["3"]["ID"] = 3;

[*]$_SESSION["Prod"]["4"]["ID"] = 4;

[*]

[*]$_SESSION["Prod"]["1"]["QNT"] = 1;

[*]$_SESSION["Prod"]["2"]["QNT"] = 2;

[*]$_SESSION["Prod"]["3"]["QNT"] = 3;

[*]$_SESSION["Prod"]["4"]["QNT"] = 4;

[*]

[*]$TOTAL = sizeof(array_keys($_SESSION["Prod"]));

[*]for($c=1; $c<=$NPRODS; $c++) {

[*]$sql = "SELECT * FROM tabela WHERE ID='".$_SESSION["Prod"]["$c"]["ID"]."'";

[*]...

Por enquanto esta funcionando perfeito, o problema chega quando eu retiro um registro do array.

 

Não sei se este é o melhor metodo, mas eu estou usando:

unset($_SESSION["Prod"]["$c"]);

Onde $c é a key enviada pelo form de exclusão.

 

Ele exclui, mas na hora da nova listagem, se eu retirar o registro 3, ele fica em branco na listagem ...

 

Como eu faria pra reagrupar o array, de modo que se eu excluir a key 3, a key quatro venha a ser a key 3, a key 5 venha a ser a key 4 ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

não que o prescot-sam esteja errado,

mas veja esses outros exemplos:

 

1

function array_trim ( $array, $index ) {

  if ( is_array ( $array ) ) {

    unset ( $array[$index] );

    array_unshift ( $array, array_shift ( $array ) );

    return $array;

    }

  else {

    return false;

    }

  }

 

 

2

function array_trim($arr, $indice) {

      if(!isset($indice)) {

              $indice = count($arr)-1;

      }

      unset($arr[$indice]);

      array_shift($arr);

      return $arr;

}

 

 

3

function eliminarElementoArreglo ($array, $indice)

{

  if (array_key_exists($indice, $array))

  {

      $temp = $array[0];

      $array[0] = $array[$indice];

      $array[$indice] = $temp;

      array_shift($array);

 

      //reacomodamos ices

      for ($i = 0 ; $i < $indice ; $i++)

      {

          $dummy = $array[$i];

          $array[$i] = $temp;

          $temp = $dummy;

      }

  }

  return $array;

}

 

referência: http://br.php.net/manual/pt_BR/function.array-pop.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo q eu entendi o 1 e 2 aó mexem nas extremidades ...O 3 eu não entendi nada ... a=b, b=c .. a=c ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.