Reputation: 235
I have a multidimensional array containing some text strings that need modifying. My initial thought was to iterate over it recursively and make the edits, but I've realised that calling the function internally must be breaking the referencing, and I can't see a way around this.
function mysqlifyArray($array)
{
global $connection;
foreach ($array as &$item)
{
if (is_string($item))
{
echo $item;
$item = mysqli_real_escape_string($connection, $item);
echo $item.'<br>';
}
elseif (is_array($item))
{
$item = mysqlifyArray($item);
}
}
unset($item);
return $array;
}
Upvotes: 0
Views: 167
Reputation: 6134
Alternatively, you could use the built-in array_walk_recursive()
function mysqlify(&$value, $index) {
global $connection;
return $value = mysqli_real_escape_string($connection, $value);
}
function mysqlify_array(&$array) {
return array_walk_recursive($array, 'mysqlify');
}
Upvotes: 1
Reputation: 3986
This might help you:
function mysqlifyArray($array)
{
global $connection;
foreach ($array as $item)
{
if (is_string($item)) {
echo $item;
$item = mysqli_real_escape_string($connection, $item);
echo $item.'<br>';
} else if (is_array($item)) {
$item = mysqlifyArray($item);
}
unset($item);
}
return $array;
}
Note: I am not sure why you used reference for $item variable, instead you can use the reference variable in the method.
Upvotes: 0
Reputation: 1717
Set reference in your function declaration
function mysqlifyArray(&$array)
{
// ....
}
Upvotes: 1