как совместить два массива в php? - PullRequest
0 голосов
/ 24 марта 2011

У меня есть один массив. Например:

array('a'=>'abc','b'=>'pqr','c'=>'xyz');

перед этим я закодировал ключ 'c' Теперь я получаю закодированное значение для этого ключа.

далее мне нужно поместить это закодированное значение вместо исходного значения закодированного ключа ...

пример, который я хотел бы вывести вот так:

array('a'=>'abc','b'=>'pqr','c'=>H162);

Пожалуйста, кто-нибудь, помогите мне.

Ответы [ 5 ]

0 голосов
/ 24 марта 2011

Очень широкий вопрос.Я поставил пример с числами, для строк существует несколько методов кодирования / декодирования.

Сначала определите ваши функции кодирования / декодирования.(Примечание: в этом примере я работаю с положительными числами. Вы можете написать свои собственные методы кодирования для строк).Когда вы получаете доступ к своим элементам, вы всегда должны знать, закодировано ли значение или нет, поэтому мы всегда представляем закодированные числа как отрицательные числа, и мы предполагаем, что отрицательные числа являются закодированными числами.(Для строк вы можете предшествовать нормальным строкам, например, «0», а кодированным строкам - «1». Существуют и другие методы.)

//Very simple functions, should be complex functions.
function encode($x) { return - $x * 2; }
function decode($x) { return - $x / 2; }

Теперь представьте массив:

$arr = array('a'=>123,'b'=>456,'c'=>789);

Чтобы кодировать 'c':

$arr['c'] = encode($arr['c']);

... или кодировать все элементы в вашем массиве:

foreach($arr as $key=>$val)
   $arr[$key] = encode($arr[$key]);

Для доступа к членам массива:

function getArrayMember($key)
{
if ($arr[$key] < 0)            //This is an encoded number...
    return decode($arr[$key]); //...decode it.
else                           //Normal numbers...
    return $arr[$key];         //...return as is.
}

Это было для чисел.Вы можете реализовать или найти подходящие методы кодирования / декодирования для строк.

0 голосов
/ 24 марта 2011

если вы просто хотите изменить значение 'c' и знаете ключ, вы можете просто вызвать что-то вроде этого

$your_array['c'] = NEW_VALUE

Но это не имеет ничего общего с объединением массивов. Если вы не хотите объединять 2 массива, взгляните на http://php.net/manual/de/function.array-combine.php

0 голосов
/ 24 марта 2011

Просто присвойте значение элементу 'c' массива.например,

$arr = array('a'=>'abc','b'=>'pqr','c'=>'xyz');
print_r($arr);
$arr['c'] = 'H162';
print_r($arr);
0 голосов
/ 24 марта 2011

array_merge - объединить один или несколько массивов

0 голосов
/ 24 марта 2011

Я считаю, что это то, что вы пытаетесь достичь:

$array1 = array('a'=>'abc','b'=>'pqr','c'=>'xyz');
$array2 = array('xyz'=>'test'); 
foreach($array1 as $key=>$element){
    if(array_key_exists($element, $array2)){
       $array1[$key] = $array2[$element]; 
    } 
}
...