2014-11-21 170 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); 
相關問題