如何在PHP中构建旧数组的新数组?

I am trying to construct a new array, just to organize my original one a bit more.

Here is my original array look like :

array (size=20893)
  0 => 
    array (size=3)
      0 => string 'Item Name' (length=9)
      1 => string 'Sales Description' (length=17)
      2 => string 'Qty on Hand' (length=11)
  1 => 
    array (size=3)
      0 => string 'bs-1808r-hrp' (length=12)
      1 => string 'RABBIT ANTI-HPT/HAPTOGLOBIN POLYCLONAL ANTIBODY, HRP CONJUGATED' (length=63)
      2 => string '' (length=0)
  2 => 
    array (size=3)
      0 => string 'bs-3605R-Biotin-de' (length=18)
      1 => string 'RABBIT ANTI-YAP1 POLYCLONAL ANTIBODY, BIOTIN CONJUGATED' (length=55)
      2 => string '' (length=0)
  3 => 
    array (size=3)
      0 => string 'bs-9185R' (length=8)
      1 => string 'RABBIT ANTI-VGLL4 POLYCLONAL ANTIBODY' (length=37)
      2 => string '' (length=0)
  4 => 
    array (size=3)
      0 => string 'Cancelled Order' (length=15)
      1 => string '' (length=0)
      2 => string '' (length=0)
  5 => 
    array (size=3)
      0 => string 'Consulting fee' (length=14)
      1 => string '' (length=0)
      2 => string '' (length=0)
  6 => 
    array (size=3)
      0 => string 'duplicate' (length=9)
      1 => string '' (length=0)
      2 => string '' (length=0)
  7 => 
    array (size=3)
      0 => string 'return' (length=6)
      1 => string '' (length=0)
      2 => string '' (length=0)
  8 => 
    array (size=3)
      0 => string 'SERVICE' (length=7)
      1 => string 'RABBIT ANTI-LPP2 POLYCLONAL ANTIBODY' (length=36)
      2 => string '' (length=0)
  9 => 
    array (size=3)
      0 => string 'Validation program' (length=18)
      1 => string '' (length=0)
      2 => string '' (length=0)
  10 => 
    array (size=3)
      0 => string 'Cold Pack' (length=9)
      1 => string '' (length=0)
      2 => string '' (length=0)

Want to see the whole array ? HERE

Right now , it index by # : 0,1,2, ... and their key is also # : 0,1,2, ...

I want to change the index from # to sku, and change their key from:

  • 0 > sku
  • 1 > name
  • 2 > stock

Can someone tell me what I did wrong here ?

// Contruct $new_qb_array
        foreach ( $qb_array as $key => $value )
        {
            $new_qb_array[ $value[0] ] = array('sku'=>$value[0], 'name'=>$value[1], 'stock'=>$value[2]);
            unset( $value[0] );
        }

I keep getting this :

enter image description here

// Contruct $new_qb_array
foreach ( $qb_array as $key => $value )
{
    $new_qb_array[ $value[0] ] = array('sku'=>$value[0], 'name'=>@$value[1], 'stock'=>@$value[2]);
}
unset($qb_array);

Note that addition of the @ symbol in front of $value[1] and $value[2] - that will suppress the error.

I also moved the unset() out of your loop - it will be a lot faster to do it once at the end rather than piece-by-piece within the loop unless I am missing something there in terms of your requirements.