Diziler dizisi göz önüne alındığında, nasıl 0 ile tüm boş değerleri değiştirebilirsiniz?

2 Cevap php

Örnek dizisi

$myArray[0] = array('23', null, '43', '12');
$myArray[1] = array(null, null, '53', '19');
$myArray[2] = array('12', '13', '14', null);

Tüm nulls 0 ile değiştirilmesi gerekir. Birisi belki de bir ben habersiz PHP işlevi yerleşik, bunu yapmanın etkili bir yolu var umuyordum.

2 Cevap

Sen null 0 ile yerini alacak bir geri arama fonksiyonu ile, array_walk_recursive işlevini kullanabilirsiniz.


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);

Note : I supposed you made a typo, and your arrays are not containing only a string, but several sub-elements.


You could use this kind of code :

array_walk_recursive($myArray, 'replacer');
var_dump($myArray);


With the following callback functon :

function replacer(& $item, $key) {
    if ($item === null) {
        $item = 0;
    }
}

Not:

  • the first parameter is passed by reference !
    • değiştirilmesi anlamına gelir ki bu dizide karşılık gelen değerini değiştirmek olacak
  • Ben karşılaştırma için === operatörünü kullanarak ediyorum


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

Tek tırnak işaretleri kasıtsız, ve diziler tamsayılar ve boş değerleri varsa:

for ($i = 0; $i < count($myArray); $i++)
{
    if ($myArray[$i] == null) $myArray[$i] = 0;
}