【发布时间】:2017-07-31 17:56:15
【问题描述】:
我有 2 个数组:
第一个:带有旧图像和链接的 $data
array:4 [▼
0 => array:2 [▼
"img" => "Koala.jpg"
"link" => "http://site.loc/1"
]
1 => array:2 [▼
"img" => "Jellyfish.jpg"
"link" => "http://site.loc/2"
]
2 => array:2 [▼
"img" => "Hydrangeas.jpg"
"link" => "http://site.loc/3"
]
3 => array:2 [▼
"img" => "Penguins.jpg"
"link" => "http://site.loc/4"
]
]
第二个:$images 新图像
array:4 [▼
"slide0" => UploadedFile {#241 ▼
-test: false
-originalName: "Lighthouse.jpg"
....
}
"slide1" => UploadedFile {#239 ▼
-test: false
-originalName: "Penguins.jpg"
....
}
"slide2" => UploadedFile {#234 ▼
-test: false
-originalName: "Desert.jpg"
....
}
"slide3" => UploadedFile {#238 ▼
-test: false
-originalName: "Tulips.jpg"
....
}
]
如何正确地进行替换:
"img" => "Koala.jpg" to "img" => "Lighthouse.jpg",
"img" => "Jellyfish.jpg" to "img" => "Penguins.jpg",
"img" => "Hydrangeas.jpg" to "img" => "Desert.jpg",
"img" => "Penguins.jpg" to "img" => "Tulips.jpg",
?
我正在尝试这样做:
foreach($data as $key=>&$item){
if(isset($images['slide'.$key])){
$item['img']=$images['slide'.$key]->getClientOriginalName();
}
}
但最后一个数组与 pre-last 重复:
array(2) { ["img"]=> string(14) "Hydrangeas.jpg" ["link"]=> string(19) "http://site.loc/1" }
array(2) { ["img"]=> string(14) "Lighthouse.jpg" ["link"]=> string(19) "http://site.loc/2" }
array(2) { ["img"]=> string(13) "Jellyfish.jpg" ["link"]=> string(19) "http://site.loc/3" }
array(2) { ["img"]=> string(13) "Jellyfish.jpg" ["link"]=> string(19) "http://site.loc/3" }
是否可以防止重复或者我应该使用其他东西然后 foreach ?
另外,我注意到当我用 foreach 替换时,多维数组的最后一个数组有 &
array:4 [▼
0 => array:2 [▼
"img" => "Hydrangeas.jpg"
"link" => "http://site.loc/1"
]
1 => array:2 [▼
"img" => "Koala.jpg"
"link" => "http://site.loc/2"
]
2 => array:2 [▼
"img" => "Jellyfish.jpg"
"link" => "http://site.loc/3"
]
3 => & array:2 [▼
"img" => "Tulips.jpg"
"link" => "http://site.loc/4"
]
]
也许这就是重复的原因?
【问题讨论】:
-
我无法重现可能存在于其他地方的问题。 eval.in/752229
标签: php arrays multidimensional-array replace foreach