PHP: diziye yeni anahtarlar eklemeden başka değerlerle bir dizideki değerleri üzerine yazmak nasıl?

4 Cevap php

Ben bir varsayılan ayarları ile dizi ve kullanıcı tarafından belirlenen ayarları ile bir dizi var. Ben varsayılan ayarları kullanıcı tarafından belirtilen olanlarla üzerine alır böylece bu iki diziyi birleştirmek istiyorum.

Ben istediğim gibi yazılmasını yapar ki, array_merge kullanmayı denedi, ama kullanıcı varsayılan olanları yok ayarlarını belirtilmiş ise de, yeni ayarları ekler. I array_merge daha bunun için kullanabileceğiniz iyi bir işlevi var mı? Ya da sadece, aynı zamanda varsayılan ayarları dizide var anahtarlarını içeren bu yüzden kullanıcı belirtilen dizi filtrelemek için kullanabileceğiniz bir fonksiyon var mı?

Example of what I want

$default = array('a' => 1, 'b' => 2);
$user = array('b' => 3, 'c' => 4);

// Somehow merge $user into $default so we end up with this:
Array
(
    [a] => 1
    [b] => 3
)

4 Cevap

Yalnızca bu düşünebilirsiniz eğer, varsayılan ayarları dizide tuşlarının üzerinde sadece döngü muhtemelen basit bulunuyor. Yani böyle bir şey yapabilirsiniz:

foreach ($default_settings AS $key => $default_value)
{
    if (array_key_exists($key, $user_settings))
    {
        $combined_settings[$key] = $user_settings[$key];
    }
    else
    {
        $combined_settings[$key] = $default_value;
    }
}
foreach($default as $key=>$val){   
  if (isset($user[$key]))
  {
    $settings[$key] = $user[$key];
  } else {
    $settings[$key] = $default[$key];
  } 
}

Ben bu ne istediğiniz olduğunu düşünüyorum.

foreach($user_settings as $key=>$val){   
    $global_settings[$key] = $val; 
}

?