[英]How to replace array item in php?
我有2个数组:
1st:$ data与旧的img和链接
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"
]
]
也许那就是重复的原因?
为此,您必须具有两个数组,然后可以使用array_replace()替换它们。
例
<?php
$a1=array("abc","def");
$a2=array("xyz","lmn");
print_r(array_replace($a1,$a2));
?>
输出将是
Array ( [0] => xyz [1] => lmn )
@Batmannn,您可以像下面这样:
<?php
$arr1 = array(
array(
"img" => "Koala.jpg",
"link" => "http://site.loc/1"
),
array(
"img" => "Jellyfish.jpg",
"link" => "http://site.loc/2"
),
array(
"img" => "Hydrangeas.jpg",
"link" => "http://site.loc/3"
),
array(
"img" => "Penguins.jpg",
"link" => "http://site.loc/4"
)
);
$arr2 = array(
"slide0" =>
array(
"test"=> false,
"originalName"=> "Lighthouse.jpg"
),
"slide1" =>
array(
"test"=> false,
"originalName"=> "Penguins.jpg"
),
"slide2" =>
array(
"test"=> false,
"originalName"=> "Desert.jpg"
),
"slide3" =>
array(
"test"=> false,
"originalName"=> "Tulips.jpg"
)
);
$newImageName = array_column($arr2, "originalName");
foreach ($arr1 as $key => $value) {
$arr1[$key]["img"] = $newImageName[$key];
}
echo "<pre>";
print_r($arr1); // final result
试试看,没有任何功能就可以实现,
<?php
$arr1 = array(
array(
"img" => "Koala.jpg",
"link" => "http://site.loc/1"
),
array(
"img" => "Jellyfish.jpg",
"link" => "http://site.loc/2"
),
array(
"img" => "Hydrangeas.jpg",
"link" => "http://site.loc/3"
),
array(
"img" => "Penguins.jpg",
"link" => "http://site.loc/4"
)
);
$arr2 = array(
"slide0" =>
array(
"test"=> false,
"originalName"=> "Lighthouse.jpg"
),
"slide1" =>
array(
"test"=> false,
"originalName"=> "Penguins.jpg"
),
"slide2" =>
array(
"test"=> false,
"originalName"=> "Desert.jpg"
),
"slide3" =>
array(
"test"=> false,
"originalName"=> "Tulips.jpg"
)
);
foreach ($arr1 as $key => $value) {
$arr1[$key]["img"] = $arr2['slide'.$key]['originalName'];
}
var_dump($arr1);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.