Как добавить строки в существующий объект, не заменяя его в al oop? - PullRequest
0 голосов
/ 30 апреля 2020

Я хочу добавить строковое значение $ datasigned к существующим значениям $ data, что мне делать?

public function index(Request $request){
    $data = Apidata::select('file')->where('nim','=',$request->nim)->get();
    foreach($data as $berkas){
        $url = $berkas->file; 
        $berkas = (array)$berkas;
        // $filename = basename($url);
        // $file = storage_path().'/berkas/'.$filename;
        $pathfile = pathinfo($url);
        $datasigned = $pathfile['dirname'].'/'.$pathfile['filename'].'_signed.'.$pathfile['extension'];
        $berkas[]["file"] = $datasigned;
    }
    return $data;
}

Ответы [ 2 ]

1 голос
/ 30 апреля 2020

Я полагаю, что вы используете laravel, поэтому, возможно, это поможет вам:

public function index(Request $request){
$data = Apidata::select('file')->where('nim','=',$request->nim)->get()->toArray();
foreach($data as $berkas){
    $url = $berkas["file"]; 
    // $filename = basename($url);
    // $file = storage_path().'/berkas/'.$filename;
    $pathfile = pathinfo($url);
    $datasigned = $pathfile['dirname'].'/'.$pathfile['filename'].'_signed.'.$pathfile['extension'];
    $berkas["file"]= $datasigned
}
return $data;

Или вы можете попробовать:

public function index(Request $request){
$data = Apidata::select('file')->where('nim','=',$request->nim)->get();
foreach($data as $berkas){
    $url = $berkas->file; 
    $berkas = (array)$berkas
    // $filename = basename($url);
    // $file = storage_path().'/berkas/'.$filename;
    $pathfile = pathinfo($url);
    $datasigned = $pathfile['dirname'].'/'.$pathfile['filename'].'_signed.'.$pathfile['extension'];
    $berkas["file"] = $datasigned
}
return $data;

Если вы не хотите переопределять " file "Вы можете просто заменить $berkas["file"] = $datasigned на $berkas[]["file"] = $datasigned

, если вы хотите добавить его к данным, вам нужно создать новый массив, проще сделать что-то вроде:

    public function index(Request $request){
    $data = Apidata::select('file')->where('nim','=',$request->nim)->get()->toArray();
    $newDaata = [];
    foreach($data as $berkas){
        $url = $berkas["file"]; 
        // $filename = basename($url);
        // $file = storage_path().'/berkas/'.$filename;
        $pathfile = pathinfo($url);
        $datasigned = $pathfile['dirname'].'/'.$pathfile['filename'].'_signed.'.$pathfile['extension'];
        $berkas["file"]= $datasigned
array_push($newData , $berkas);
    }
    return $newData;

Hope yusefull

0 голосов
/ 30 апреля 2020

Спасибо @Troaca Михай!

public function index(Request $request){
        $data = Apidata::select('file')->where('nim','=',$request->nim)->get()->toArray();
        $newData = [];
        foreach($data as $berkas){
            $url = $berkas["file"]; 
            // $filename = basename($url);
            // $file = storage_path().'/berkas/'.$filename;
            $pathfile = pathinfo($url);
            $datasigned = $pathfile['dirname'].'/'.$pathfile['filename'].'_signed.'.$pathfile['extension'];
            $berkas["file"]= $datasigned;
            array_push($newData , $berkas);
        }
        $combinedData = array_merge($data,$newData);
        return $combinedData;
    }
...