2016-07-27 58 views
0

我有一個陣列的每個其項被對象,我已經轉換用以下代碼數組:如何修改陣列,每個產品陣列在PHP(在描述澄清)

json_decode(json_encode($array), true) 

,其結果的代碼是這樣的一個數組:

[ 
    '1'=>[ 
    'slug'=>'a' 
    'title'=>'foo' 
    ], 
    '2'=>[ 
    'slug'=>'b' 
    'title'=>'bar' 
    ], 
    '3'=>[ 
    'slug'=>'c' 
    'title'=>'foo' 
    ], 
] 

現在我想隱蔽這個數組出頭這樣

[ 
    'a'=>'foom', 
    'b'=>'bar', 
    'c'=>'foo', 
] 

我該怎麼辦它?

回答

2

使用的foreach和array_combine()

foreach ($your_array as $key => $value) { 
    // get all the keys in $slug array 
    $slug[] = $value['slug']; 
    // get all the values in $title array 
    $title[] = $value['title']; 
} 
// finally combine and get your required array 
$required_array = array_combine($slug, $title); 

我認爲它也可以用來達到的 -

$requiredArray = array_combine(
    array_column($your_array, 'slug'), 
    array_column($your_array, 'title') 
); 
+0

th @ k @ ditendrapurohit第二種方式工作像一個魅力,第一種方法也是正確的,我已經測試過,但在數組中有很多項目,所以它似乎有點便宜。 – Ali

1

你必須重複初始陣列上,並創建新的一個是這樣的:

$array = [ 
    '1'=>[ 
    'slug'=>'a' 
    'title'=>'foo' 
    ], 
    '2'=>[ 
    'slug'=>'b' 
    'title'=>'bar' 
    ], 
    '3'=>[ 
    'slug'=>'c' 
    'title'=>'foo' 
    ], 
]; 

$result = []; 
foreach($array as $elem){ 
    $index = $elem["slug"]; 
    $value= $elem["title"]; 
    $result[$index] = $value; 
} 
+0

謝謝。它已經解決了 – Ali

1
foreach($array as $elem){ 
    $result[$elem["slug"]] = $elem["title"]; 
} 
+0

謝謝。它一直在解決 – Ali