从DB获取并将它们存储在新的PHP数组中

时间:2012-12-15 11:17:21

标签: php

我从我的数据库中获取数据,它们看起来像这样:

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

其中key-1是列的名称。 (我只有一个条目)。

我想只提取列值并将它们保存到一个新的数组中,输出如下:

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

我希望它看起来完全像这样而不是:[{"key-1":"1","key-2":"1","key-3":"1","key-4":"1"}]

我试过了:

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

其中$ output是首先显示的数据库的结果(带[]的数据。

并且$ cart是我想要的新数组。

两者都声明为:

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

$output[]=$row其中row是数据库提取的结果。怎么做?

3 个答案:

答案 0 :(得分:1)

这是一种方法,我在这里用数据库行替换了一个字符串,并使用了json_decode()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);

输出:

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

答案 1 :(得分:0)

这是一个非常混乱的问题。 从我收集到的你想要的可能是这个......?

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

答案 2 :(得分:0)

使用mysql_fetch_assoc()仅获取列名称;)

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