组合阵列的最佳实践

时间:2019-06-13 06:51:52

标签: php arrays json

我有用于创建数组对象的代码,我想知道执行此操作的最佳实践,并且我正在尝试学习php最佳实践。

$authorId = array("1", "2");
$authorName = array("Juan Cruz", "Jose Rizal");
$authorSname = array("J. Cruz", "J. Rizal");

for ($i = 0; $i < count($authorId); $i++) {
  array_push($authorValue, array(
     "author_id" => $authorId[$i],
     "author_name" => $authorName[$i],
     "author_sname" => $authorSname[$i],
  ));
}

,这也是此代码转换为JSON的结果。

[
    {
        "author_id": "1",
        "author_name": "Juan Cruz",
        "author_sname": "J. Cruz"
    },
    {
        "author_id": "2",
        "author_name": "Jose Rizal",
        "author_sname": "J. Rizal"
    }
]

3 个答案:

答案 0 :(得分:2)

您可以使用:

$authorId = array("1", "2");
$authorName = array("Juan Cruz", "Jose Rizal");
$authorSname = array("J. Cruz", "J. Rizal");

$keys = array("author_id", "author_name", "author_sname");
$res = array_map(null, $authorId, $authorName, $authorSname);
$res = array_map(function ($e) use ($keys) {return json_encode(array_combine($keys, $e), JSON_FORCE_OBJECT);}, $res);

使用JSON_FORCE_OBJECT转换为json

参考:array-combinearray-map

答案 1 :(得分:1)

您可以使用array_map

$res = [];
$key=0;
array_map(function($v1,$v2,$v3) use(&$res,&$key){
    $res[] = [
     'author_id'   => $v1,
     'author_name' => $v2, 
     'author_sname'=> $v3
  ];
 $key++;
}, $authorId,$authorName,$authorSname);
echo json_encode($res);

Live Demo

答案 2 :(得分:1)

您可以执行最快的简便方法

<?php

$authorId = array("1", "2");
$authorName = array("Juan Cruz", "Jose Rizal");
$authorSname = array("J. Cruz", "J. Rizal");
$res = [];
foreach($authorId as $key => $value){
    $res[] = [
        'author_id'   => $value,
        'author_name' => $authorName[$key], 
        'author_sname'=> $authorSname[$key]
    ];
}
echo json_encode($res);

DEMO