2016-03-26 37 views
1

林試圖建立一個PHP JSON數組這種結構:建立鍵和值的數組?

[{"id":"name last name", 
    "id":"name last name", 
    "id":"name last name" 
}] 

其中ID關鍵始終是一個異數,不僅ID字符串

我試着這樣做:

for ($i = 0; $i < count($array); $i++){ 
    //$namesArray[] = array($array[$i]["id"] =>$array[$i]["name"]. 
    //    " ".$array[$i]["last"]." ".$array[$i]["name"]); 

    $namesArray[] = array_fill_keys(
     $array[$i]["id"], 
     $array[$i]["name"]." ". 
      $array[$i]["last"]." ". 
      $array[$i]["name"] 
    ); 
} 

echo json_encode($namesArray); 

隨着註釋行我得到的是這樣的:

[{"id":"name last name"}, 
{"id":"name last name"} 
] 

但我不希望這樣,我想在一個數組中的所有鍵和值。

謝謝。

+0

而不是'$ namesArray [] = array_fill_keys($陣列[$ i] [ 「身份證」],$ array [$ i] [「name」]。「」。$ array [$ i] [「last」]。「」。$ array [$ i] [「name」]); '試試這個'$ namesArray [$ array [$ i] [「id」]] = $ array [$ i] [「name」];' –

+0

''$ namesArray [$ array [$ i] [「id 「]。」]] = $ array [$ i] [「name」]。「」。$ array [$ i] [「last」]。「」。$ array [$ i] [「name」]'''then' ''json_encode([$ namesArray])''' –

回答

0

這裏是你如何能做到這一點:

// sample data 
$array = array(
    array("id" => 1, "name" => "James", "last" => "Last"), 
    array("id" => 2, "name" => "Micheal", "last" => "Jackson"), 
); 

// create empty object (associative array) 
$obj = (object) array(); 

// add key/value pairs to that object 
foreach ($array as $row) { 
    $obj->$row["id"] = $row["name"] . " " . $row["last"]; 
} 

// wrap object in a single-element array 
$result = array($obj); 

// output to JSON string 
echo json_encode($result, JSON_PRETTY_PRINT); 

輸出:

[ 
    { 
     "1": "James Last", 
     "2": "Micheal Jackson" 
    } 
] 
+0

謝謝這工作完美! –

0

您可以使用功能的方法來填補所需陣列array_reduce

$array = [ 
    ['id' => 1, 'name' => 'name1', 'last' => 'last1'], 
    ['id' => 2, 'name' => 'name2', 'last' => 'last2'], 
    ['id' => 3, 'name' => 'name3', 'last' => 'last3'], 
]; 


$newArray = array_reduce($array, function($carry, $item) { 
    $carry[$item['id']] = $item["name"]." ". 
     $item["last"]." ". 
     $item["name"]; 

    return $carry; 
}); 

var_dump($newArray); 

輸出將是:

array(3) { 
    [1]=> 
    string(17) "name1 last1 name1" 
    [2]=> 
    string(17) "name2 last2 name2" 
    [3]=> 
    string(17) "name3 last3 name3" 
} 
1

保持代碼乾淨

$array = []; 
$array[] = ['id'=>3 , 'name'=>'H', 'last'=>'bensiali' ]; 
$array[] = ['id'=>4 , 'name'=>'Simon', 'last'=>'Says' ]; 
$array[] = ['id'=>5 , 'name'=>'Mohammed', 'last'=>'Ali' ]; 


$val = []; 
foreach ($array as $key => $value) { 
    $val[$value['id']] = sprintf("%s %s" , $value['name'] , $value['last']); 
} 

echo json_encode($val); 

輸出將是:

{"3":"H bensiali","4":"Simon Says","5":"Mohammed Ali"}