[尝试将字符串推入对象时无法通过参数传递参数1

问题描述 投票:-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; 
            // $filename = basename($url);
            // $file = storage_path().'/berkas/'.$filename;
            $pathfile = pathinfo($url);
            $datasigned = $pathfile['dirname'].'/'.$pathfile['filename'].'_signed.'.$pathfile['extension'];
            array_push((array)$berkas, array("file" => $datasigned));
        }
        return $data;
    }

编辑:我通过首先对(array)$ berkas创建一个新变量并将其放到那里来解决了。但是数据不会添加新的字符串$ datasigned ...我该怎么办?

php array-push
1个回答
0
投票

[array_push()声称只有在具有数字索引的数组时才是最好的,但是在这种情况下,如果要在另一个数组中添加带有键的值,则必须使用array_merge()作为

  public function index(Request $request){
        $data = Apidata::select('file')->where('nim','=',$request->nim)->get();
        foreach($data as $berkas){
            $url = $berkas->file; 
            // $filename = basename($url);
            // $file = storage_path().'/berkas/'.$filename;
            $pathfile = pathinfo($url);

        }
 $datasigned = array( 
 'key' => $pathfile['dirname'].'/'.$pathfile['filename'].'_signed.'.$pathfile['extension']
);
     $result = array_merge($data,$datasigned);   
        return $data;
    }

0
投票

我想您正在使用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;

如果您不想覆盖“文件”,只需将$berkas["file"] = $datasigned替换为$berkas[]["file"] = $datasigned

希望是yusefull

© www.soinside.com 2019 - 2024. All rights reserved.