2011-02-18 43 views
11

我想在数组中的所有项目中进行字符串替换。我拥有的是:字符串替换数组中的所有项目PHP

$row['c1'] = str_replace("&", "&", $row['c1']); 
$row['c2'] = str_replace("&", "&", $row['c2']); 
$row['c3'] = str_replace("&", "&", $row['c3']); 
$row['c4'] = str_replace("&", "&", $row['c4']); 
$row['c5'] = str_replace("&", "&", $row['c5']); 
$row['c6'] = str_replace("&", "&", $row['c6']); 
$row['c7'] = str_replace("&", "&", $row['c7']); 
$row['c8'] = str_replace("&", "&", $row['c8']); 
$row['c9'] = str_replace("&", "&", $row['c9']); 
$row['c10'] = str_replace("&", "&", $row['c10']); 

如何用较少的代码实现这一目标?我认为一个foreach声明会起作用,例如:

$columns = array($row['c1'], $row['c2'], $row['c3'], $row['c4'], $row['c5'], $row['c6'], $row['c7'], $row['c8'], $row['c9'], $row['c10']); 

foreach ($columns as $value){ 
    $value = str_replace("&", "&", $value); 
} 

但它不起作用。

回答

29

只要做到:

$row = str_replace("&", "&", $row); 

注:您的foreach不起作用,因为你需要一个基准,或使用关键:

foreach ($columns as &$value) { // reference 
    $value = str_replace("&", "&", $value); 
} 
unset($value); // break the reference with the last element 

或者:

foreach ($columns as $key => $value){ 
    $columns[$key] = str_replace("&", "&", $value); 
} 

尽管这里没有必要,因为str_replace接受并返回arra YS。

+1

你有它的人...我不知道`str_replace`也接受`阵列`太 – Ish 2011-02-18 18:31:19

2

你应该引用调用它,否则foreach创建的$value

foreach ($columns as &$value)

0

另一种解决办法重复的副本是用PHP array_walk这样的:

function custom_replace(&$item, $key) { 
    $item = str_replace('22', '75', $item); 
} 

// Init dummy array. 
$columns = array('Cabbage22', 'Frid22ay', 'Internet', 'Place22', '22Salary', '22Stretch', 'Whale22Inn'); 

// Print BEFORE. 
echo 'Before: '; 
print_r($columns); 

// Make the replacements. 
array_walk($columns, 'custom_replace'); 

// Print AFTER. 
echo 'After:'; 
print_r($columns); 

输出:

Before: Array 
(
    [0] => Cabbage22 
    [1] => Frid22ay 
    [2] => Internet 
    [3] => Place22 
    [4] => 22Salary 
    [5] => 22Stretch 
    [6] => Whale22Inn 
) 
After: Array 
(
    [0] => Cabbage75 
    [1] => Frid75ay 
    [2] => Internet 
    [3] => Place75 
    [4] => 75Salary 
    [5] => 75Stretch 
    [6] => Whale75Inn 
) 
相关问题