Başka bir diziden değerleri kullanarak bir dizinin anahtarını değiştirmek için en iyi yolu nedir?

2 Cevap php

Ben iki dizi var:

array (
 'AK_AGE_ASS_VISIBLE' => '1',
 'AK_AGE_ASS_COMP' => '0',
  .....
 )

Ben başka bir diziden alarak başka bir değere anahtarını değiştirmek istiyorum:

array(
'AK_AGE_ASS_VISIBLE' => 'AGENT_ASSOCIATED',
'AK_AGE_ASS_COMP' => 'AGENT_ASSOCIATED_O',
....
)

Biten dizi bu diziyi üretmek gerekir:

array(
'AGENT_ASSOCIATED' => '1',
'AGENT_ASSOCIATED_O' => '0',
...
)

Bu tür şeyler yapmak için doğru yolu nedir? Arrayys girişlerinin aynı sayıda olmaz ve ilk dizi diğer dizideki ilgili tuşa sahip olacak herhangi bir garantisi olmadığını unutmayın.

Thank you very much

2 Cevap

Bu deneyin:

$values = array(
    'AK_AGE_ASS_VISIBLE' => '1',
    'AK_AGE_ASS_COMP' => '0',
    // …
);
$keymap = array(
    'AK_AGE_ASS_VISIBLE' => 'AGENT_ASSOCIATED',
    'AK_AGE_ASS_COMP' => 'AGENT_ASSOCIATED_O',
    // …
);

$output = array();
foreach ($values as $key => $val) {
    $output[$keymap[$key]] = $val;
}

Kullanım yerleşik array_combine()? http://www.php.net/manual/en/function.array-combine.php

Muhtemelen array_intersect_key() diziler üzerinde, ya mevcut değil, bu anahtarları süzmek için kullanmak gerekir. http://www.php.net/manual/en/function.array-intersect-key.php

Burada büyülü bir tek-liner:

$output = array_combine(
   array_intersect_key($array_with_keys, $array_with_values),
   array_intersect_key($array_with_values, $array_with_keys));