在 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']);
}
很久以前我用 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']);
}