在不知道原始值是什么的情况下替换数组中的元素 / PHP
Replacing elements in an array without knowing what the original value will be / PHP
我有一个已转换为多个数组的 csv。数组的一个元素包含作为字符串的鞋码。这些尺寸可以是从 2 到 16 的任何一组数字。
我分解了字符串以将每个尺码放在它自己的一个元素中,这样我就可以将它内爆,在每个鞋码之间也有管道字符。在我分解数组之前,我想将鞋码从一个数字更改为英国、美国和欧盟尺码,例如 2 变为 UK2/US6/EU36 3 变为 UK3/US7/EU37 等...
我看过 preg repalce preg match array splice 但我遇到的问题是数组中的第一个元素并不总是相同的大小。它可以从任何鞋码开始,具体取决于存货。还有尺码可能会漏单。
我看过这个解决方案,但不确定它是否是最好的方法 Replace elements in an array depending on their value
$exp = explode(" ", $data[12]);
print_r($exp);
//change form size into UK/US/EU sizes ?
//add pipe character bewtween size and return to string
$imp = implode("|", $exp);
$model = str_replace("Model: ", "", $data[13]);
$brand = str_replace("Manufactured by: ", "", $data[14]);
// This is where you build your array output
$outputData = array($data[5], $data[6], $data[7], $data[15], $data[16], $data[21]= $model, $data[22]= $imp, $data[23]= $brand);
这就是我希望能够做到的
爆炸后的原始代码
Array
(
[0] => 2
[1] => 3
[2] => 4
[3] => 5
[4] => 6
[5] => 7
[6] => 8
[7] => 9
)
改成这个
Array
(
[0] => UK2/US5/EU35
[1] => UK3/US6/EU36
[2] => UK4/US7/EU37
[3] => UK5/US8/EU38
[4] => UK6/US9/EUR39
[5] => UK7/US10/EU40
[6] => UK8/US11/EU41
[7] => UK9/US12/EUR42
)
然后我就可以内爆了。
这应该适合你:
只需使用 array_map()
遍历每个数组元素并根据需要进行更改:
<?php
$exp = array_map(function($v){
return "UK" . $v . "/US" . ($v + 3) . "/EU" . ($v + 33);
}, $exp);
print_r($exp);
?>
能这么简单吗?
foreach($exp as &$v) {
$v = 'UK'.$v.'/US'.($v+3).'/EU'.($v+33);
}
我有一个已转换为多个数组的 csv。数组的一个元素包含作为字符串的鞋码。这些尺寸可以是从 2 到 16 的任何一组数字。
我分解了字符串以将每个尺码放在它自己的一个元素中,这样我就可以将它内爆,在每个鞋码之间也有管道字符。在我分解数组之前,我想将鞋码从一个数字更改为英国、美国和欧盟尺码,例如 2 变为 UK2/US6/EU36 3 变为 UK3/US7/EU37 等...
我看过 preg repalce preg match array splice 但我遇到的问题是数组中的第一个元素并不总是相同的大小。它可以从任何鞋码开始,具体取决于存货。还有尺码可能会漏单。
我看过这个解决方案,但不确定它是否是最好的方法 Replace elements in an array depending on their value
$exp = explode(" ", $data[12]);
print_r($exp);
//change form size into UK/US/EU sizes ?
//add pipe character bewtween size and return to string
$imp = implode("|", $exp);
$model = str_replace("Model: ", "", $data[13]);
$brand = str_replace("Manufactured by: ", "", $data[14]);
// This is where you build your array output
$outputData = array($data[5], $data[6], $data[7], $data[15], $data[16], $data[21]= $model, $data[22]= $imp, $data[23]= $brand);
这就是我希望能够做到的
爆炸后的原始代码
Array
(
[0] => 2
[1] => 3
[2] => 4
[3] => 5
[4] => 6
[5] => 7
[6] => 8
[7] => 9
)
改成这个
Array
(
[0] => UK2/US5/EU35
[1] => UK3/US6/EU36
[2] => UK4/US7/EU37
[3] => UK5/US8/EU38
[4] => UK6/US9/EUR39
[5] => UK7/US10/EU40
[6] => UK8/US11/EU41
[7] => UK9/US12/EUR42
)
然后我就可以内爆了。
这应该适合你:
只需使用 array_map()
遍历每个数组元素并根据需要进行更改:
<?php
$exp = array_map(function($v){
return "UK" . $v . "/US" . ($v + 3) . "/EU" . ($v + 33);
}, $exp);
print_r($exp);
?>
能这么简单吗?
foreach($exp as &$v) {
$v = 'UK'.$v.'/US'.($v+3).'/EU'.($v+33);
}