如何将数组转换为关联数组?

时间:2014-11-21 10:23:54

标签: php codeigniter

这是我的数组格式:

$data=["error.png","invoice_1.pdf","invoice2.png"];

但我想要这种格式:

$data=[{"file":"error.png"},{"file":"invoice_1.pdf"},{"file":"invoice2.png"}]

谢谢。

4 个答案:

答案 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);