Url-encode all ampersands found in a 1d array of strings
arrays, php, replace, string
Solution
Just do:
$row = str_replace("&", "&", $row);
Note: Your foreach doesn't work because you need a reference, or use the key:
foreach ( $columns as &$value) { // reference
$value = str_replace("&", "&", $value);
}
unset($value); // break the reference with the last element
Or:
foreach ($columns as $key => $value){
$columns[$key] = str_replace("&", "&", $value);
}
Although it is not necessary here because `str_replace` accepts and returns arrays.
Problem
I would like to do a string replacement in all items in an array. What I have is: ``` $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']); ``` How can I achieve this with less code? I thought a foreach statement would work, e.g.: ``` $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); } ``` But it doesn't work.