2014-03-12 66 views
0

假设我有一个这样的数组array('first item', 'seconditem', 'third item') 现在我想搜索变量中的所有项目(使用foreach,因为我假设我不知道有多少物品会在里面数组) 我怎么会删除所有空格,并将它们添加到新阵列,以几乎相同的结构,但它们将显示为:代替搜索数组中的项目,并从中创建新变量

array('firstitem','seconditem','thirditem') 

array('first item', 'seconditem', 'third item') 

由PHP的方式..

+0

您已经足够了解使用'foreach',所以请尝试解决方案并将其发布到此处。在寻求帮助之前,您至少需要*尝试*解决您的问题。 – meagar

+0

是的,但问题是我不知道什么函数被称为处理在字符中搜索的东西,并删除它们; /老实说,不只是要求喂食代码,我真的想学习如何处理数组这个。 – user3332590

+0

@ user3332590:它被称为'str_replace'。它直接支持数组,所以你甚至不需要'foreach'。 – Jon

回答

0

试试这个:

function removeSpaces($input) { 
    foreach (array_keys($input) as $i) { 
     if (is_string($input[$i])) { 
      $input[$i] = preg_replace('/\s+/', '', $input[$i]); 
     } elseif (is_array($input[$i])) { 
      $input[$i] = removeSpaces($input[$i]); 
     } 
    } 
    return $input; 
} 

用法:

$array = array('key1' => 'test item', array('first item', 117 => 'seconditem', 'third item')); 

$array = removeSpaces($array); 

print_r($array); 

输出:

Array 
(
    [key1] => testitem 
    [0] => Array 
     (
      [0] => firstitem 
      [117] => seconditem 
      [118] => thirditem 
     ) 

) 

这个函数使用自定义键递归和安全! :)

+0

我们去了,preg_replace()是我在找的东西,不需要循环,因为我可以使用foreach,谢谢 – user3332590

+1

@ReeCube:根本不需要循环:'$ input = preg_replace('/ \ s + /','',$ input)'。 – Jon

+0

@Jon是不需要循环,但如果你希望你的脚本也可以和数组和对象一起工作,你的方法将会抛出异常,**这个函数是解决问题的安全方式** – ReeCube

0

如何

$arr = array('firstitem', 'second item', 'third item'); 
array_walk($arr, function(&$value, $key) { $value = str_replace(' ', '', $value); }); 
print_r($arr); 

给人

Array 
(
    [0] => firstitem 
    [1] => seconditem 
    [2] => thirditem 
) 

如果你不想原始数组改变呢,首先将它复制($arr2 = $arr);

相关问题