Как объединить 2 файла json в PHP, из которых 1 является массивом - PullRequest
1 голос
/ 11 мая 2019

Я создал JSON в PHP из разных таблиц.1 возвращенный объект json является массивом.Как я могу объединить оба со вторым, являющимся подмассивом первого.Я хочу отправить это как один json в формы Xamarin (android) с одним get

PHP массива слияния дает Аргумент 2 не массив

Json1
{
    "employeeid": "1123",
    "employeename": "EMP 001 NAME",
    "mMacID": "E0138",
    "machinename": "FOS",
    "iscleaning": 1,
    "isperforming": 1,
    "isverifying": 1,
    "cSeqno": 1,
    "cMacID": "E0138",
    "cInterval": 112,
    "cCleanOperationMaxTime": 300,
    "cPerformOperationMaxTime": 600,
    "oSequenceID": 6,
    "oMacID": "E0138",
    "oItemNumber": " ",
    "oBatchNumber": " ",
    "oPONumber": " ",
    "oCompletedOperation": 0,
    "oComplOperStartTime": 0,
    "oCompOperEndndTime": 0,
    "oOperationToContinue": 1
}

Json2 (Array)
[
    {
        "pMachineID": "E0138",
        "pmachinetoLocationSequence": 1,
        "pLocationNumber": 1,
        "pLocationName": "TestLoc1",
        "pLocationInterval": 12,
        "pImageRequiredForVerifying": 1,
        "pErrorFound": 0
    },
    {
        "pMachineID": "E0138",
        "pmachinetoLocationSequence": 1,
        "pLocationNumber": 2,
        "pLocationName": "TestLoc2",
        "pLocationInterval": 15,
        "pImageRequiredForVerifying": 0,
        "pErrorFound": 0
    },
    {
        "pMachineID": "E0138",
        "pmachinetoLocationSequence": 1,
        "pLocationNumber": 3,
        "pLocationName": "TESTLOC3",
        "pLocationInterval": 18,
        "pImageRequiredForVerifying": 0,
        "pErrorFound": 0
    },
    {
        "pMachineID": "E0138",
        "pmachinetoLocationSequence": 1,
        "pLocationNumber": 1,
        "pLocationName": "LOC1",
        "pLocationInterval": 12,
        "pImageRequiredForVerifying": 0,
        "pErrorFound": 0
    }
]

Я хочу второй в качествемассив в первом.

Ответы [ 2 ]

2 голосов
/ 11 мая 2019

Просто декодируйте строку 2 JSON, а затем добавьте массивы в класс следующим образом

$js1 = '{
    "employeeid": "1123",
    "employeename": "EMP 001 NAME",
    "mMacID": "E0138",
    "machinename": "FOS",
    "iscleaning": 1,
    "isperforming": 1,
    "isverifying": 1,
    "cSeqno": 1,
    "cMacID": "E0138",
    "cInterval": 112,
    "cCleanOperationMaxTime": 300,
    "cPerformOperationMaxTime": 600,
    "oSequenceID": 6,
    "oMacID": "E0138",
    "oItemNumber": " ",
    "oBatchNumber": " ",
    "oPONumber": " ",
    "oCompletedOperation": 0,
    "oComplOperStartTime": 0,
    "oCompOperEndndTime": 0,
    "oOperationToContinue": 1
}';

$js2 = '[
    {
        "pMachineID": "E0138",
        "pmachinetoLocationSequence": 1,
        "pLocationNumber": 1,
        "pLocationName": "TestLoc1",
        "pLocationInterval": 12,
        "pImageRequiredForVerifying": 1,
        "pErrorFound": 0
    },
    {
        "pMachineID": "E0138",
        "pmachinetoLocationSequence": 1,
        "pLocationNumber": 2,
        "pLocationName": "TestLoc2",
        "pLocationInterval": 15,
        "pImageRequiredForVerifying": 0,
        "pErrorFound": 0
    },
    {
        "pMachineID": "E0138",
        "pmachinetoLocationSequence": 1,
        "pLocationNumber": 3,
        "pLocationName": "TESTLOC3",
        "pLocationInterval": 18,
        "pImageRequiredForVerifying": 0,
        "pErrorFound": 0
    },
    {
        "pMachineID": "E0138",
        "pmachinetoLocationSequence": 1,
        "pLocationNumber": 1,
        "pLocationName": "LOC1",
        "pLocationInterval": 12,
        "pImageRequiredForVerifying": 0,
        "pErrorFound": 0
    }
]';

$j1 = json_decode($js1);
$j2 = json_decode($js2);

// You may want to give this a more sensible name than `theArrays`
$j1->theArrays = $j2;

print_r($j1);

$new_json_string = json_encode($j1);

echo $new_json_string;

РЕЗУЛЬТАТ print_r($j1)

stdClass Object
(
    [employeeid] => 1123
    [employeename] => EMP 001 NAME
    [mMacID] => E0138
    [machinename] => FOS
    [iscleaning] => 1
    [isperforming] => 1
    [isverifying] => 1
    [cSeqno] => 1
    [cMacID] => E0138
    [cInterval] => 112
    [cCleanOperationMaxTime] => 300
    [cPerformOperationMaxTime] => 600
    [oSequenceID] => 6
    [oMacID] => E0138
    [oItemNumber] =>  
    [oBatchNumber] =>  
    [oPONumber] =>  
    [oCompletedOperation] => 0
    [oComplOperStartTime] => 0
    [oCompOperEndndTime] => 0
    [oOperationToContinue] => 1
    [theArrays] => Array
        (
            [0] => stdClass Object
                (
                    [pMachineID] => E0138
                    [pmachinetoLocationSequence] => 1
                    [pLocationNumber] => 1
                    [pLocationName] => TestLoc1
                    [pLocationInterval] => 12
                    [pImageRequiredForVerifying] => 1
                    [pErrorFound] => 0
                )

            [1] => stdClass Object
                (
                    [pMachineID] => E0138
                    [pmachinetoLocationSequence] => 1
                    [pLocationNumber] => 2
                    [pLocationName] => TestLoc2
                    [pLocationInterval] => 15
                    [pImageRequiredForVerifying] => 0
                    [pErrorFound] => 0
                )

            [2] => stdClass Object
                (
                    [pMachineID] => E0138
                    [pmachinetoLocationSequence] => 1
                    [pLocationNumber] => 3
                    [pLocationName] => TESTLOC3
                    [pLocationInterval] => 18
                    [pImageRequiredForVerifying] => 0
                    [pErrorFound] => 0
                )

            [3] => stdClass Object
                (
                    [pMachineID] => E0138
                    [pmachinetoLocationSequence] => 1
                    [pLocationNumber] => 1
                    [pLocationName] => LOC1
                    [pLocationInterval] => 12
                    [pImageRequiredForVerifying] => 0
                    [pErrorFound] => 0
                )

        )

)
1 голос
/ 11 мая 2019

Вы можете использовать json_decode и array_merge, чтобы приблизиться к этому

$json1ToArray = json_decode($json1, true);
$json2ToArray = json_decode($json2, true);
$res = array_merge($json1ToArray, $json2ToArray);
print_r($res); 

Live Demo

...