ghostrider
ghostrider

Reputation: 5259

fetching from DB and store them in a new array PHP

I am fetching data from my DB and they look like this:

[{"0":"1","key-1":"1","1":"1","key-2":"1","2":"1","key-3":"1","3":"1","key-4":"1"}] 

where the key-1 are the name of the column. (I only have one entry so).

I want to extract only the column values and save them into a new array that will output like this:

{"key-1":"1","key-2":"1","key-3":"1","key-4":"1"} 

I want it to look exactly like this and not : [{"key-1":"1","key-2":"1","key-3":"1","key-4":"1"}]

I tried this:

$cart["key-1"]=$output["key-1"];

where $output is the outcome of the DB that shown first (the one with []).

and the $cart is the new array I want.

Both are declared as:

$cart=array();
$output=array();

and $output[]=$row where row is the result of the DB fetch. How to do it?

Upvotes: 0

Views: 96

Answers (3)

Dale
Dale

Reputation: 10469

Here's one way to do it, I've substituted the database row for a string here, and made use of json_decode() and json_encode()

$data = '[{"0":"1","key-1":"1","1":"1","key-2":"1","2":"1","key-3":"1","3":"1","key-4":"1"}]';

// convert to an array
$data = json_decode($data, true);

// create new array here
$cart = array();

for ($i = 0; $i < count($data); $i++)
{
    foreach ($data[$i] as $k => $v)
    {
        if (strpos($k, 'key') !== FALSE)
        {
            $cart[$k] = $v;
        }
    }
}

echo $cart['key-1'] . '<br/>';

echo json_encode($cart);

Output:

1
{"key-1":"1","key-2":"1","key-3":"1","key-4":"1"}

Upvotes: 1

0xmtn
0xmtn

Reputation: 2670

Use mysql_fetch_assoc() to get only column names ;)

while ($row = mysql_fetch_assoc($result_of_query))
{
    echo $row['key-1'];
    echo $row['key-2'];
}

Upvotes: 0

Smuuf
Smuuf

Reputation: 6534

This is a very chaotically asked question. From what I gathered you want maybe this..?

$cart=array();
foreach ($output as $index=>$value){
  if stripos($index,"key-"){
    cart[$index]=$value;
  }
}

Upvotes: 0

Related Questions