【问题标题】:Replacing elements in an array without knowing what the original value will be / PHP在不知道原始值是什么的情况下替换数组中的元素 / PHP
【发布时间】:2015-06-30 17:39:44
【问题描述】:

我有一个已转换为多个数组的 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
)

然后我可以内爆。

【问题讨论】:

  • 我知道原始代码的值是英国大小。问题是:如何将英国尺码转换为美国尺码/欧盟尺码?你有某种转换表或公式吗?

标签: php arrays replace preg-replace


【解决方案1】:

这应该适合你:

只需使用array_map() 遍历每个数组元素并根据需要进行更改:

<?php

    $exp = array_map(function($v){
        return "UK" . $v . "/US" . ($v + 3) . "/EU" . ($v + 33);
    }, $exp);

    print_r($exp);

?>

【讨论】:

  • 完美 非常感谢,我什至从来没有想过要像这样查看尺寸的值。
【解决方案2】:

就这么简单吗?

foreach($exp as &$v) {
    $v = 'UK'.$v.'/US'.($v+3).'/EU'.($v+33);
}

【讨论】:

  • 会这么简单吗?不,因为这不会像你想象的那样工作:)(提示:-> ()
猜你喜欢
  • 1970-01-01
  • 2021-09-28
  • 1970-01-01
  • 1970-01-01
  • 2020-04-10
  • 2012-06-02
  • 2019-04-04
  • 1970-01-01
  • 2021-07-02
相关资源
最近更新 更多