我正在从mysql中重新获取数据。在我的PHP我有2个数组设置
$main =array(); //tostore retrived data
$list =array('instock' => 'output1', 'item' => 'output2'); //existing key values and new key value to be replaced
如何使用每个输出的自定义键替换键? exmpale:自定义键output1
,output2
当前输出
[{"instock":"yes", "item":"ch00024"},{..}]
预期输出
[{"output1":"yes", "output2":"ch00024"},{..}]
这是我到目前为止所尝试的。但是不起作用。
$main =array(); //tostore retrived data
$list =array('instock' => 'output1', 'item' => 'output2'); //replace key values
foreach ($result as $key => $value){
$main[ $list[ $key ] ] = $value;
}
echo json_encode( $main );
我收到错误Undefined offset: 0
。它指向此行$main[ $list[ $key ] ] = $value;
修改
这是我的控制台的屏幕截图
的var_dump():
array(5) {
[0]=>
array(2) {
["instock"]=>
string(3) "yes"
["item"]=>
string(6) "it0215"
}
[1]=>
array(2) {
["instock"]=>
string(3) "yes"
["item"]=>
string(6) "it0381"
}
so on...
答案 0 :(得分:1)
尝试此代码
$ flippedList = array_flip($ list);
答案 1 :(得分:1)
您的代码有效!问题出在$list
数组中,您需要在$result
中定义所有键,否则您需要检查$list
数组中是否存在该键。
$result =array(
'instock' => 'yes',
'item' => 'ch00024',
'color' => 'blue',
'price' => 100
);
$main = array();
$list = array('instock' => 'output1', 'item' => 'output2');
foreach ($result as $key => $value){
if (!empty($list[$key])) {
$main[$list[$key]] = $value;
}
}
echo json_encode($main);
修改强>
因为你是访问二维数组,所以你需要一个额外的循环来遍历所有项目
$result = array(
array (
'instock' => 'yes',
'item' => 'it0215'
),
array(
'instock' => 'yes',
'item' => 'it0381'
)
);
$main = array();
$list = array('instock' => 'output1', 'item' => 'output2');
foreach ($result as $item){
foreach ($item as $key => $value) {
$main[$list[$key]] = $value;
}
}
echo json_encode($main);
输出
{"output1":"yes","output2":"it0381"}
但是如果你想在新数组中获得所有带密钥替换的项目。你应该这样做:
foreach ($result as $index => $item){
foreach ($item as $key => $value) {
$main[$index][$list[$key]] = $value;
}
}
echo json_encode($main);
输出结果为:
[
{"output1":"yes","output2":"it0215"},
{"output1":"yes","output2":"it0381"}
]