2014-11-21 134 views
0

这是我的阵列格式:如何将数组转换为关联数组?

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

但我想这种格式:

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

谢谢。

+0

为什么你想给相同的密钥来所有的变量? – 2014-11-21 10:24:50

+1

这确实是非常简单的逻辑。你没有试图自己做这件事,甚至没有找到你想要的东西,因为你绝对不是第一个想做这件简单事情的人。 – 2014-11-21 11:14:52

回答

2

您应该创建一个新的数组。

并循环访问您现有的数组。

它的每个元素都是一个数组,其值为数组中的值。

以及作为字符串file的键。

如果你得到正确的数组
$arr = array(); 
foreach ($data as $elem) { 
    $arr[] = array('file' => $elem); 
} 

尝试调试:

echo '<pre>'; 
print_r($arr); 
echo '</pre>'; 

最后,

echo json_encode($arr); 
exit; 

希望它为你工作。

+0

谢谢。其工作 – 2014-11-21 10:29:21

+0

然后,请接受我的答案作为解决方案。 – Pupil 2014-11-21 10:29:50

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; 

刚刚尝试这个逻辑

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的(),并通过$项目作为参数传递给它的构造

$data = array_map(
    function ($item) { 
     return new MyClass($item); 
    }, 
    $data 
); 
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); 
相关问题