繁体   English   中英

PHP 关联数组到 JSON

[英]PHP Associative Array to JSON

我需要以非常特定的格式输出数据以用于某些东西。

$product = Product::with('product_attribute_values', 'product_attribute_values.product_attribute_key')->find(2);

$product_decoded = json_decode($product, true);

我需要将产品属性值提取为特定格式,目前看起来像:

在此处输入图片说明

我希望它是这样的:

{
    "Material":"Plastic", 
    "Printing Method":"Pad", 
    "Ink Colour":"Black", 
    "Barrel Colour":"Silver", 
    "Grip Colour":"Black"
}

我试过这个:

$final_array = array();

foreach($product_decoded['product_attribute_values'] as $pav) {
     $array = [
          $pav['product_attribute_key']['name'] => $pav['name']
     ];

     array_push($final_array, $array);
}

return json_encode($final_array);

这导致数据看起来像:

[
    {"Material":"Plastic"},
    {"Printing Method":"Pad"},
    {"Ink Colour":"Black"},
    {"Barrel Colour":"Silver"},
    {"Grip Colour":"Black"}
]

这将如何实现?

你可以这样做:

foreach($product_decoded['product_attribute_values'] as $pav) {
     $array[$pav['product_attribute_key']['name']] = $pav['name'];
}

return json_encode($array);

对于这样的事情,您可以使用集合

return collect($product_decoded['product_attribute_values'])
    ->pluck('name', 'product_attribute_key.name')
    ->toJson();

或者,您可以使用数组助手

$finalArray = Arr::pluck($product_decoded['product_attribute_values'],'name', 'product_attribute_key.name' );

return json_encode($finalArray);

你需要把它放在一个对象而不是一个数组中。

$item = array("Material"=>"Plastic", "Printing Method"=>"Pad", "Ink Colour"=>"Black", "Barrel Colour"=>"Silver", "Grip Colour"=>"Black");

echo json_encode($item);

将导致此 JSON:

[
    {"Material":"Plastic"},
    {"Printing Method":"Pad"},
    {"Ink Colour":"Black"},
    {"Barrel Colour":"Silver"},
    {"Grip Colour":"Black"}
]

这是正确的 JSON 数组语法。

为了得到

{
    "Material":"Plastic", 
    "Printing Method":"Pad", 
    "Ink Colour":"Black", 
    "Barrel Colour":"Silver", 
    "Grip Colour":"Black"
}

你需要类似的东西

$item->Material = "Plastic";
$item->PrintingMethod = "Pad";
$item->InkColour = "Black";
$item->Barrel Colour = "Silver";
$item->GripColour = "Black;

json_encode($item);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM