在array_map php中添加键值对

时间:2017-09-26 08:21:53

标签: php arrays multidimensional-array

[{
    "id": "000060000000000071964708\/17\/201309:55:00"
}, {
    "column": "pcchrgcod"
}]

这是我的选择查询和添加新密钥对。

我的愿望是:

[{
    "id": "000060000000000071964708\/17\/201309:55:00",
    "column": "pcchrgcod"
}]

我尝试的是:

while ($selected_row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    $rows[] =  array_map('utf8_encode', $selected_row);
    array_push($rows, array('column' => $column));
}

在我的解决方案中,我使用array_push,但它没有返回我想要的输出。

  

如何解决这个问题?

输出是json_encode

的结果

UPDATE

数组来自选择查询。在该查询的返回行上,我想添加另一对键值。这就是我想添加另一个密钥对值

的原因

Additional Question

说出这个查询

Select column AS colunname from table

从这个查询我想要columnname = 'column_name'的价值?

1 个答案:

答案 0 :(得分:0)

您可以使用array_walk实现此目的,请尝试下面的代码,

$str = '[{
    "id": "000060000000000071964708\/17\/201309:55:00"
}, {
    "column": "pcchrgcod"
}]';
$arr = json_decode($str, true); // true => making it normal array 
$result = []; // output array
array_walk($arr, function ($item, $key) use (&$result) { // passing address of result
    $result[key($item)] = $item[key($item)]; // key => first key of array
});
print_r($result); // output of the snippet

这是工作code

编辑: 根据要求,请查看下面的代码段。

while ($selected_row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    $temp =  array_map('utf8_encode', $selected_row);
    $temp_row = ['id'=> $temp['id'], 'column' => $temp['column']];
    array_push($rows, $temp_row);
}