给定一个数组数组,如何从每个值中去掉子串“GB”?

时间:2010-05-11 00:31:15

标签: php arrays substring

我的数组中的每个项目都是一个大约5个值的数组。其中一些是以“GB”结尾的数字。我需要相同的数组,但是“GB”被剥离,只留下数字。

所以我需要遍历整个数组,在每个子数组上取每个值并从中删除字符串“GB”并从输出中创建一个新数组。

任何人都可以推荐和有效的方法吗?

4 个答案:

答案 0 :(得分:2)

您可以使用array_walk_recursive()

array_walk_recursive($arr, 'strip_text', 'GB');

function strip_text(&$value, $key, $string) {
  $value = str_replace($string, '', $value);
}

与通过引用(正确)遍历数组的数据相比,它不那么尴尬。

答案 1 :(得分:1)

您可以创建自己的自定义函数来迭代数组的值,检查子字符串GB是否存在,如果存在,则将其删除。使用该功能,您可以将原始数组和函数传递到array_map

答案 2 :(得分:1)

$arr = ...

foreach( $arr as $k => $inner ) {
   foreach( $inner as $kk => &$vv ) {
      $vv = str_replace( 'GB', '', $vv );
   }
}

这实际上使用新字符串保持原始数组的完整性。 (注意&$vv,这意味着我通过引用得到变量,这意味着循环中对$vv的任何更改都会影响实际字符串,而不是通过复制

答案 3 :(得分:1)

// i only did the subarray part
$diskSizes = array("500", "300 GB", "200", "120 GB", "130GB");
$newArray = array();

foreach ($diskSizes as $diskSize) {
    $newArray[] = str_replace('GB', '', $diskSize);


}

// look at the new array
print_r($newArray);