在 Yii2 中使用简单的 foreach 循环代替带有 key=>value 的 foreach

Using simple foreach loop instead of foreach with key=>value in Yii2

很久以前我用 Yii2 编写了这段代码来获取幻灯片的照片,然后在几张图像中选择另一个图像大小,虽然它有效,但因为我最近没有使用 PHP ,我不明白为什么。我想我应该能够使用一个简单的 foreach 循环,但是当我将它更改为一个简单的循环时,它不起作用。 这是代码:

public static function getSlideShowPage($type)
{
    $slideShow=SlideShow::find()
        ->select(['title','image','title_position','subtitle', 'title_color'])
        ->where(['deleted' => 0,'active'=>1,'type'=>$type])
        ->orderBy('id ASC')
        ->groupBy('id')
        ->asArray()
        ->all();
    if(!empty($slideShow))
    foreach ($slideShow as $key=>$slide){
        $slideShow[$key]['image']=str_replace('_xs', "", $slide['image']);
    }
    return $slideShow;
}

我遇到的问题是这部分:

    if(!empty($slideShow))
    foreach ($slideShow as $key=>$slide){
        $slideShow[$key]['image']=str_replace('_xs', "", $slide['image']);
    }
   

为什么我不能这样写:

if(!empty($slideShow))
    foreach ($slideShow as $slide){
        str_replace('_xs', "", $slide['image']);
    }

在每个 foreach 循环中,我选择一个数组元素并替换图像的 URL。 如果有任何帮助或建议,我将不胜感激。

正如@Qirel 提到的,您应该将其作为参考传递,但您还必须对 str_replace:

的结果做一些事情
foreach ($slideShow as &$slide){
    $slide['image'] = str_replace('_xs', '', $slide['image']);
}