Как добавить элемент в массив

У меня есть один метод в PHP, который выполняет хранимую процедуру, как это:

Function GetInTransitAndDelivery($Parameter)
    {
        $this->load->database();
        $query =  $this->db->query( " EXEC StoredProcedureName $Parameter");
        if (count($query->num_rows()) > 0)
        {
            $result = array();
            foreach ($query->result() as $row)
            {
                $result[] = array("EffectiveStatusId"=>$row->EffectiveStatusId,
            "EffectiveStatus"=>$row->EffectiveStatus,
            "RecordCount"=>$row->RecordCount);
            }
        }
        return $result;
    }

что дает мне результат, как это:

{

    "GetInTransitAndDeliveryResponse":[
        {
            "EffectiveStatusId":1,
            "EffectiveStatus":"abc",
            "RecordCount":7
        },
        {
            "EffectiveStatusId":6,
            "EffectiveStatus":"efg",
            "RecordCount":91
        }
    ]

Но я хочу привести вот так:

{

    "GetInTransitAndDeliveryResponse":[
        {
            "EffectiveStatusId":1,
            "EffectiveStatus":"abc",
            "RecordCount":7
        },
         {
            "EffectiveStatusId":1,
            "EffectiveStatus":"efg",
            "RecordCount":7
        },
         {
            "EffectiveStatusId":1,
            "EffectiveStatus":"hij",
            "RecordCount":0
        },

        {
            "EffectiveStatusId":6,
            "EffectiveStatus":"klm",
            "RecordCount":0
        }
    ]

Итак, как добавить элемент в массив результатов

заранее спасибо

3 ответа

Использовать array_push();

мой рабочий пример ниже

    <?php
    $array = array("1", "2");
    array_push($array, "3", "4");
    print_r($array);
    ?>

// output will be
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
)

Перед преобразованием массива в json добавьте эти элементы следующим образом:

$result[] = array(
    "EffectiveStatusId"=>1,
    "EffectiveStatus"=>"hij",
    "RecordCount"=>0
);

$result[] = array(
    "EffectiveStatusId"=>6s,
    "EffectiveStatus"=>"klm",
    "RecordCount"=>0
);

и вы можете добавить все элементы, которые вы хотите.

Попробуйте функцию array_push()

Смотрите документацию

Ответ изменяется в зависимости от вашего комментария

<?php
//1 - I think your array element is as json string

$str = '{
    "GetInTransitAndDeliveryResponse":[
        {
            "EffectiveStatusId":1,
            "EffectiveStatus":"abc",
            "RecordCount":7
        },
        {
            "EffectiveStatusId":6,
            "EffectiveStatus":"efg",
            "RecordCount":91
        }
    ]
}';

//2 -  So make it first as associative array

$array = json_decode($str,true);

//3 - Then push array item

array_push($array["GetInTransitAndDeliveryResponse"],
    array(
        "EffectiveStatusId"=>1,
        "EffectiveStatus"=>"hij",
        "RecordCount"=>0
    ),

    array(
        "EffectiveStatusId"=>6,
        "EffectiveStatus"=>"klm",
        "RecordCount"=>0
    )
);

//4 - encode it as json string

$str = json_encode($json);

//5 - print it

echo $str;

Выход:

{
    "GetInTransitAndDeliveryResponse":[
        {
            "EffectiveStatusId":1,
            "EffectiveStatus":"abc",
            "RecordCount":7
        },
        {
            "EffectiveStatusId":6,
            "EffectiveStatus":"efg",
            "RecordCount":91
        },
        {
            "EffectiveStatusId":1,
            "EffectiveStatus":"hij",
            "RecordCount":0
        },
        {
            "EffectiveStatusId":6,
            "EffectiveStatus":"klm",
            "RecordCount":0
        }
    ]
}
Другие вопросы по тегам