Как обновить массив в несколько массивов, сохраняя тот же ключ - PullRequest
0 голосов
/ 16 февраля 2020

У меня есть массив ниже. Что мне нужно сделать, это сбросить один массив внутри "Urunler", чем обновление нового массива. Очень важно, как можно создать новый массив, сохранив то же значение ключа, что и удаленный.

stdClass Object
(
    [Urun] => Array
        (
            [0] => stdClass Object
                (
                    [Id] => 1384
                    [Urun_kodu] => UKy74GhoD1LZ
                    [Urun_adi] => Bizim Ayçiçek Yağı Teneke 5 Lt
                    [Urun_resim] => uploads/urunler_v/UKy74GhoD1LZ/637b4-bizim-aycicek-yagi-tenekelxwbmlgpdh.jpg
                    [Esas_tutar] => 27.00
                    [Esas_tutar_kdvsiz] => 25.00
                    [Kdv_tutar] => 2.00
                    [Kdv_tutar_adetli] => 6.00
                    [Adetli_tutar] => 81.00
                    [Adetli_tutar_kdvsiz] => 75.00
                    [Urun_adeti] => 3
                    [Urun_kuru] => TRY
                    [Urun_ds] => 100
                )

            [1] => stdClass Object
                (
                    [Id] => 4518
                    [Urun_kodu] => UK6FfrWzDPLE
                    [Urun_adi] => Besler Ton Balığı 2x160 Gr
                    [Urun_resim] => uploads/urunler_v/UK6FfrWzDPLE/bfeec-besler-ton-baligi-2x160-grqrgy6fl2hv.jpg
                    [Esas_tutar] => 10.80
                    [Esas_tutar_kdvsiz] => 10.00
                    [Kdv_tutar] => 0.80
                    [Kdv_tutar_adetli] => 2.40
                    [Adetli_tutar] => 32.40
                    [Adetli_tutar_kdvsiz] => 30.00
                    [Urun_adeti] => 3
                    [Urun_kuru] => TRY
                    [Urun_ds] => 32
                )
            [2] => stdClass Object
                (
                    [Id] => 4518
                    [Urun_kodu] => UK6FfrWzDPLE
                    [Urun_adi] => Besler Ton Balığı 2x160 Gr
                    [Urun_resim] => uploads/urunler_v/UK6FfrWzDPLE/bfeec-besler-ton-baligi-2x160-grqrgy6fl2hv.jpg
                    [Esas_tutar] => 10.80
                    [Esas_tutar_kdvsiz] => 10.00
                    [Kdv_tutar] => 0.80
                    [Kdv_tutar_adetli] => 2.40
                    [Adetli_tutar] => 32.40
                    [Adetli_tutar_kdvsiz] => 30.00
                    [Urun_adeti] => 3
                    [Urun_kuru] => TRY
                    [Urun_ds] => 32
                )


        )
)

Ниже вы можете увидеть мои шаги при отправке нового массива

$Urun = $SepetBilgisi->Urun;

        $MevcutUrunSayisi=count($Urun);
        $YeniUrun=[];
        foreach($Urun as $Key => $Value)
        {
            if($Value->Id== $UrunId){  // My target is $UrunId=4518 that means  $Urun[Urun][1] one
                unset($Urun[$Key]);

                if(count($Urun)< $MevcutUrunSayisi){

                    //Şimdi Yeni Array Buraya Ekleyelim

                    $YeniUrun[$Key]=[

                        "Id"=> $Value->Id,
                        "Urun_kodu" => $Value->Urun_kodu,
                        "Urun_resim" => $Value->Urun_resim,
                        "Esas_tutar" => $Value->Esas_tutar,
                        "Esas_tutar_kdvsiz" => $Value->Esas_tutar_kdvsiz,
                        "Kdv_tutar" => $Value->Kdv_tutar,
                        "Kdv_tutar_adetli" => $Value->Kdv_tutar_adetli,
                        "Adetli_tutar" => $Value->Adetli_tutar,
                        "Adetli_tutar_kdvsiz" => $Value->Adetli_tutar_kdvsiz,
                        "Urun_adeti" => $YeniAdet,
                        "Urun_kuru" => $Value->Urun_kuru,
                        "Urun_ds" => $Value->Urun_ds
                    ];

                    array_push($Urun , $YeniUrun);

                }else{
                    return false;
                }

            }
        }

Использование 'array_pu sh' только ставит конец нового массива в основной массив, как вы знаете.

1 Ответ

0 голосов
/ 16 февраля 2020

Вы хотите заменить ключ, а не pu sh до конца массива:

    $Urun = $SepetBilgisi->Urun;

    $MevcutUrunSayisi=count($Urun);
    $YeniUrun=[];
    foreach($Urun as $Key => $Value)
    {
        if($Value->Id== $UrunId){  // My target is $UrunId=4518 that means  $Urun[Urun][1] one

            if(count($Urun)< $MevcutUrunSayisi){

                //Şimdi Yeni Array Buraya Ekleyelim

                $replace=[
                    "Id"=> $Value->Id,
                    "Urun_kodu" => $Value->Urun_kodu,
                    "Urun_resim" => $Value->Urun_resim,
                    "Esas_tutar" => $Value->Esas_tutar,
                    "Esas_tutar_kdvsiz" => $Value->Esas_tutar_kdvsiz,
                    "Kdv_tutar" => $Value->Kdv_tutar,
                    "Kdv_tutar_adetli" => $Value->Kdv_tutar_adetli,
                    "Adetli_tutar" => $Value->Adetli_tutar,
                    "Adetli_tutar_kdvsiz" => $Value->Adetli_tutar_kdvsiz,
                    "Urun_adeti" => $YeniAdet,
                    "Urun_kuru" => $Value->Urun_kuru,
                    "Urun_ds" => $Value->Urun_ds
                ];

                $Urun[$Key] = $replace;

            }else{
                return false;
            }

        }
    }
...