
Question:
Example array
$myArray[0] = array('23', null, '43', '12');
$myArray[1] = array(null, null, '53', '19');
$myArray[2] = array('12', '13', '14', null);
All nulls should be replaced with 0. I was hoping someone would have an efficient way of doing this, perhaps a built in PHP function that I am unaware of.
Answer1:You could use the <a href="http://fr2.php.net/manual/en/function.array-walk-recursive.php" rel="nofollow"><strong>array_walk_recursive
</strong></a> function, with a callback function that would replace null
by 0
.
<br /> For example, considering your array is declared this way :
$myArray[0] = array(23, null, 43, 12);
$myArray[1] = array(null, null, 53, 19);
$myArray[2] = array(12, 13, 14, null);
<em>Note : I supposed you made a typo, and your arrays are not containing only a string, but several sub-elements.</em>
<br /> You could use this kind of code :
array_walk_recursive($myArray, 'replacer');
var_dump($myArray);
<br /> With the following callback functon :
function replacer(& $item, $key) {
if ($item === null) {
$item = 0;
}
}
Note that :
<ul><li>the first parameter is passed by reference ! <ul><li>which means modifying it will modify the corresponding value in your array</li> </ul></li> <li>I'm using the===
operator for the comparison</li>
</ul><br /> And you'd get the following output :
array
0 =>
array
0 => int 23
1 => int 0
2 => int 43
3 => int 12
1 =>
array
0 => int 0
1 => int 0
2 => int 53
3 => int 19
2 =>
array
0 => int 12
1 => int 13
2 => int 14
3 => int 0
Answer2:If the single quotation marks are unintentional, and the arrays have integers and null values:
for ($i = 0; $i < count($myArray); $i++)
{
if ($myArray[$i] == null) $myArray[$i] = 0;
}