Как добавить один ключ и значение в конец массива в php

 [0] => {"butapid":"50","name":"Output CST 2% ( with C form)","description":"","value":"2.00000000","butapsid":"1","butaptid":"1","created_uid":"1","updated_uid":"1","created_ts":"2017-03-31 11:36:52","updated_ts":"2018-01-12 20:10:08","butapatid":"1","butapappid":"1","alid":"199","gbutapid":"2","gbusupid":"6","butaprid":"1","tax_type":"2","company_id":"1","global_business_sub_profile":null,"businessTaxProfileType":null,"businessTaxProfileAmountType":null,"global_business_tax_profile":null}
    [1] => {"butapid":"51","name":"Output Vat 5.5%","description":"f","value":"5.50000000","butapsid":"1","butaptid":"1","created_uid":"1","updated_uid":"1","created_ts":"2017-04-06 18:55:04","updated_ts":"2018-01-13 16:18:13","butapatid":"1","butapappid":"1","alid":"139","gbutapid":"1","gbusupid":"4","butaprid":"1","tax_type":"1","company_id":"1","global_business_sub_profile":null,"businessTaxProfileType":null,"businessTaxProfileAmountType":null,"global_business_tax_profile":null}
    [2] => {"butapid":"57","name":"Output Service Tax 15%","description":"","value":"15.00000000","butapsid":"1","butaptid":"1","created_uid":"1","updated_uid":"1","created_ts":"2017-04-12 13:46:29","updated_ts":"2018-03-29 18:29:56","butapatid":"1","butapappid":"1","alid":"177","gbutapid":"3","gbusupid":"8","butaprid":"3","tax_type":"1","company_id":"1","global_business_sub_profile":null,"businessTaxProfileType":null,"businessTaxProfileAmountType":null,"global_business_tax_profile":null}

в конце каждого массива я хочу вставить как «sub» => 1 или «sub» => 0

[0] => {"butapid":"50","name":"Output CST 2% ( with C form)","description":"","value":"2.00000000","butapsid":"1","butaptid":"1","created_uid":"1","updated_uid":"1","created_ts":"2017-03-31 11:36:52","updated_ts":"2018-01-12 20:10:08","butapatid":"1","butapappid":"1","alid":"199","gbutapid":"2","gbusupid":"6","butaprid":"1","tax_type":"2","company_id":"1","global_business_sub_profile":null,"businessTaxProfileType":null,"businessTaxProfileAmountType":null,"global_business_tax_profile":null,"sub"=>1}
    [1] => {"butapid":"51","name":"Output Vat 5.5%","description":"f","value":"5.50000000","butapsid":"1","butaptid":"1","created_uid":"1","updated_uid":"1","created_ts":"2017-04-06 18:55:04","updated_ts":"2018-01-13 16:18:13","butapatid":"1","butapappid":"1","alid":"139","gbutapid":"1","gbusupid":"4","butaprid":"1","tax_type":"1","company_id":"1","global_business_sub_profile":null,"businessTaxProfileType":null,"businessTaxProfileAmountType":null,"global_business_tax_profile":null,"sub"=>1}
    [2] => {"butapid":"57","name":"Output Service Tax 15%","description":"","value":"15.00000000","butapsid":"1","butaptid":"1","created_uid":"1","updated_uid":"1","created_ts":"2017-04-12 13:46:29","updated_ts":"2018-03-29 18:29:56","butapatid":"1","butapappid":"1","alid":"177","gbutapid":"3","gbusupid":"8","butaprid":"3","tax_type":"1","company_id":"1","global_business_sub_profile":null,"businessTaxProfileType":null,"businessTaxProfileAmountType":null,"global_business_tax_profile":null,"sub"=>0}

  if ($all_taxes)
        {
            foreach ($all_taxes as $tax)
            {
                $t = new BusinessTaxProfile($tax->getId());
                $tax_array[] = strval($t);
                $subprofile = BusinessTaxSubProfileManager::getBusinessSubProfiles($tax->getId(), 1);
            }
        }

Если $ subprofile не пуст, то «sub» => 1, иначе «sub» => 0.

Я пробовал толкать массив, но он создал другой массив.

$all_taxes - это массив в вашем первом поле кода?

Nick 22.05.2018 08:16
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
47
3

Ответы 3

Это может выглядеть примерно так:

if ($all_taxes)
{
    foreach ($all_taxes as $tax)
    {
        $t = new BusinessTaxProfile($tax->getId());
        $subprofile = BusinessTaxSubProfileManager::getBusinessSubProfiles($tax->getId(), 1);
        $t->sub = (int)!empty($subprofile);
        $tax_array[] = (string)$t;
    }
}

Но вам нужно отредактировать метод BusinessTaxProfile__toString() также, потому что я думаю, что он генерирует вывод json.

Покажи BusinessTaxProfile, и я отредактирую свой ответ по размеру.

Вы можете сделать это, используя ссылку в foreach

$array = array(array("butapid"=>"50","name"=>"Output CST 2% ( with C form)","description"=>"","value"=>"2.00000000","butapsid"=>"1","butaptid"=>"1","created_uid"=>"1","updated_uid"=>"1","created_ts"=>"2017-03-31 11:36:52","updated_ts"=>"2018-01-12 20:10:08","butapatid"=>"1","butapappid"=>"1","alid"=>"199","gbutapid"=>"2","gbusupid"=>"6","butaprid"=>"1","tax_type"=>"2","company_id"=>"1","global_business_sub_profile"=>null,"businessTaxProfileType"=>null,"businessTaxProfileAmountType"=>null,"global_business_tax_profile"=>null),
    array("butapid"=>"51","name"=>"Output Vat 5.5%","description"=>"f","value"=>"5.50000000","butapsid"=>"1","butaptid"=>"1","created_uid"=>"1","updated_uid"=>"1","created_ts"=>"2017-04-06 18:55:04","updated_ts"=>"2018-01-13 16:18:13","butapatid"=>"1","butapappid"=>"1","alid"=>"139","gbutapid"=>"1","gbusupid"=>"4","butaprid"=>"1","tax_type"=>"1","company_id"=>"1","global_business_sub_profile"=>null,"businessTaxProfileType"=>null,"businessTaxProfileAmountType"=>null,"global_business_tax_profile"=>null),
    array("butapid"=>"57","name"=>"Output Service Tax 15%","description"=>"","value"=>"15.00000000","butapsid"=>"1","butaptid"=>"1","created_uid"=>"1","updated_uid"=>"1","created_ts"=>"2017-04-12 13:46:29","updated_ts"=>"2018-03-29 18:29:56","butapatid"=>"1","butapappid"=>"1","alid"=>"177","gbutapid"=>"3","gbusupid"=>"8","butaprid"=>"3","tax_type"=>"1","company_id"=>"1","global_business_sub_profile"=>null,"businessTaxProfileType"=>null,"businessTaxProfileAmountType"=>null,"global_business_tax_profile"=>null)
);



foreach ($array as $key => &$value) {
                        // ^^ it will allow you to manipulate same array  
    $subprofile = true; // change this with your code
    if ($subprofile) {
        $value['sub'] = 1;    
    } else {
        $value['sub'] = 0;
    }
}

echo "<pre>";
print_r($array); // it will have "sub" key added in respective array

Причина, по которой отправка массива не работает, заключается в том, что содержимое $all_taxes является объектами в кодировке JSON. Итак, чтобы добавить к ним, вам нужно сначала их декодировать, затем обновить значение, а затем перекодировать их как JSON. Вы можете сделать это в своем цикле следующим образом:

foreach ($all_taxes as &$tax)
{
    $t = new BusinessTaxProfile($tax->getId());
    $tax_array[] = strval($t);
    $subprofile = BusinessTaxSubProfileManager::getBusinessSubProfiles($tax->getId(), 1);
    $dtax = json_decode($tax);
    $dtax->sub = empty($subprofile) ? 0 : 1;
    $tax = json_encode($dtax);
}

Обратите внимание, что вам нужно изменить foreach на foreach ($all_taxes as &$tax), чтобы вы могли изменить значение элемента массива в цикле.

Со случайными значениями для $subprofile это дает на выходе:

Array
(
    [0] => {"butapid":"50","name":"Output CST 2% ( with C form)","description":"","value":"2.00000000","butapsid":"1","butaptid":"1","created_uid":"1","updated_uid":"1","created_ts":"2017-03-31 11:36:52","updated_ts":"2018-01-12 20:10:08","butapatid":"1","butapappid":"1","alid":"199","gbutapid":"2","gbusupid":"6","butaprid":"1","tax_type":"2","company_id":"1","global_business_sub_profile":null,"businessTaxProfileType":null,"businessTaxProfileAmountType":null,"global_business_tax_profile":null,"sub":1}
    [1] => {"butapid":"51","name":"Output Vat 5.5%","description":"f","value":"5.50000000","butapsid":"1","butaptid":"1","created_uid":"1","updated_uid":"1","created_ts":"2017-04-06 18:55:04","updated_ts":"2018-01-13 16:18:13","butapatid":"1","butapappid":"1","alid":"139","gbutapid":"1","gbusupid":"4","butaprid":"1","tax_type":"1","company_id":"1","global_business_sub_profile":null,"businessTaxProfileType":null,"businessTaxProfileAmountType":null,"global_business_tax_profile":null,"sub":0}
    [2] => {"butapid":"57","name":"Output Service Tax 15%","description":"","value":"15.00000000","butapsid":"1","butaptid":"1","created_uid":"1","updated_uid":"1","created_ts":"2017-04-12 13:46:29","updated_ts":"2018-03-29 18:29:56","butapatid":"1","butapappid":"1","alid":"177","gbutapid":"3","gbusupid":"8","butaprid":"3","tax_type":"1","company_id":"1","global_business_sub_profile":null,"businessTaxProfileType":null,"businessTaxProfileAmountType":null,"global_business_tax_profile":null,"sub":1}
)

Как же вы идете?

Nick 23.05.2018 00:35

Другие вопросы по теме