Проблем с array_replace()

Dodo1987

Registered
Здравейте

Наложи ми се да използвам една много хубава функция за замяна стойностите в масив, но се оказа че е за PHP >= 5.3.0 а моя сървър все още е 5.2 На тази етап неможе да се мине на 5.3!

Става дума за тази фунция - http://www.php.net/manual/en/function.array-replace.php

Молбата ми е - дайте ми някоя друга която върши същата работа или код с който от даден масив искам да променя само 1 стойност по зададен ключ.

Благодаря
 
Ако на някой му трябва - става и така
Код:
<?php
$input = array("red", "green", "blue", "yellow");
$needle = "green";
$replacement = "apple";
for($i=0;$i<count($input);$i++) {
   if($input[$i] == $needle) {
   $input[$i] = $replacement;
   }
}
?>
 
Написах една за бързо, не е точно като оригиналната, но смятам че ще ти свърши работа.

Код:
<?php
if (!function_exists('array_replace'))
{
    function array_replace($array, $replacements)
    {
        foreach ($replacements as $key => $value)
        {
            $array[$key] = $value;
        }
        return $array;
    }
}


$base = array("orange", "banana", "apple", "raspberry");
$replacements = array(0 => "pineapple", 4 => "cherry");

$basket = array_replace($base, $replacements);
echo "<pre>";
print_r($basket);
echo "</pre>";
?>
 
Ммм, поиграх си още малко и мисля, че я направих точно като оригинала :D

Код:
<?php
if (!function_exists('array_replace'))
{
    function array_replace($array, &$replacements)
    {
        $all_arguments = func_get_args();
        foreach ($all_arguments as $key => $value)
        {
            if (!$key) continue;
            
            foreach ($value as $key2 => $value2)
            {
                $array[$key2] = $value2;
            }
        }
        
        return $array;
    }
}


$base = array("orange", "banana", "apple", "raspberry");
$replacements = array(0 => "pineapple", 4 => "cherry");
$replacements2 = array(0 => "grape");

$basket = array_replace($base, $replacements, $replacements2);
echo "<pre>";
print_r($basket);
echo "</pre>";
?>
 

Back
Горе