【问题标题】:Json encode Arrays valueJson 编码数组值
【发布时间】:2019-09-12 11:27:59
【问题描述】:

如何将来自特定数组键的所有值分配给 json 值。

$cars = Array ( [0] => Array ( [category] => Most Selling [title] => BMW [price] => 20000 ) [1] => Array ( [category] => Most Selling [title] => Jeep [price] => 15000) [2] => Array ( [category] => Most Selling [title] => Lexus [price] => 18000  ) )

foreach ( $cars as $car) {
     $data = [
    'model' => 'new',
    'company' => $car['title'],
];
}
$json = json_encode($data); 

现在当我输出 $json 我得到:

{"model":"new","company":"Lexus"}

为什么它没有像这样分配所有标题值?

{"model":"new","company":"BMW, Jeep, Lexus"}

【问题讨论】:

    标签: php arrays json wordpress api


    【解决方案1】:

    您不需要 foreach 循环。你可以使用implodearray_column

    $data = [
      'model'   => 'new',
      'company' => implode(', ',array_column($cars, 'title'))
    ];
    echo $json = json_encode($data);
    

    现场演示:https://3v4l.org/9IrW8

    【讨论】:

    • 通过逗号和空格内爆以获得准确的输出 ;-)
    • @Tod 很高兴为您提供帮助!如果它解决了您的问题,您可以接受答案。
    【解决方案2】:

    这应该会产生您需要的输出。

    $data = [
        'model' => 'new',
        'company' => '',
    ];
    foreach ( $cars as $car) {
         $data['company'] .= $car['title'] . ', ';
    }
    
    $data['company'] = substr($data['company'], 0, -2); // remove last comma and space
    $json = json_encode($data);
    

    【讨论】:

    • 为什么不直接 implode() ?
    • 我更喜欢 Rakesh 的回答,但很高兴我能提供帮助!
    【解决方案3】:
    $data = [];
    foreach ( $cars as $car) {
         $data[] = [
            'model' => 'new',
            'company' => $car['title'],
        ];
    }
    

    【讨论】:

    • 这不会产生他正在寻找的输出
    【解决方案4】:
    
    $companyString = implode(', ', array_column($cars, 'title'));
    
    $data = [
       'model' => 'new',
       'company' => $companyString
    ];
    
    $json = json_encode($data); 
    

    【讨论】:

    • 请在您的代码中添加一些解释,以便其他人可以从中学习
    猜你喜欢
    • 2015-03-15
    • 2023-03-12
    • 1970-01-01
    • 2015-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多