这是我的数组格式:
$data=["error.png","invoice_1.pdf","invoice2.png"];
但我想要这种格式:
$data=[{"file":"error.png"},{"file":"invoice_1.pdf"},{"file":"invoice2.png"}]
谢谢。
答案 0 :(得分:2)
您应该创建一个新数组。
循环遍历现有阵列。
它的每个元素都是一个数组,其数组值为值。
并键入字符串file
。
$arr = array();
foreach ($data as $elem) {
$arr[] = array('file' => $elem);
}
如果获得正确的数组,请尝试调试:
echo '<pre>';
print_r($arr);
echo '</pre>';
最后,
echo json_encode($arr);
exit;
希望它适合你。
答案 1 :(得分:1)
使用
$data = array_map(
function ($item) {
return array('file' => $item);
},
$data
);
将值嵌入数组中,或
$data = array_map(
function ($item) {
$x = new stdClass();
$x->file = $item;
return $x;
},
$data
);
将它们嵌入对象中。
或者,更好的是,使用您自己的类而不是stdClass()并将$ item作为参数传递给它的构造函数
$data = array_map(
function ($item) {
return new MyClass($item);
},
$data
);
答案 2 :(得分:0)
$data = ["error.png", "invoice_1.pdf", "invoice2.png"];
$newarray = array();
foreach ($data as $val){
array_push($newarray, array("file" => $val));
}
print_r($newarray); //Array ( [0] => Array ( [file] => error.png ) [1] => Array ( [file] => invoice_1.pdf ) [2] => Array ( [file] => invoice2.png ) )
echo json_encode($newarray); // [{"file":"error.png"},{"file":"invoice_1.pdf"},{"file":"invoice2.png"}]
exit;
试试这个逻辑
答案 3 :(得分:0)
$data = '["error.png","invoice_1.pdf","invoice2.png"]';
$data = json_decode($data);
$data = array_filter($data, function(&$item){return ($item = array('file' => $item));});
$data = json_encode($data);