如何在不循环替换的情况下向现有对象添加字符串?

问题描述 投票:-1回答:1

我想将$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;
}
php array-push
1个回答
1
投票

我想你使用的是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 is yusefull


0
投票

谢谢@Troaca Mihai!

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;
    }
© www.soinside.com 2019 - 2024. All rights reserved.