3v4l.org

run code in 300+ PHP versions simultaneously
<?php $controlValue = [ 'item1' => 'val1', 'item2' => 'val2', 'item3' => [ 'item4' => 'val4', 'item5' => 'val5', ], ]; $encryptedFields = [ 'item2', 'item3.item5', ]; foreach ($encryptedFields as $encryptedField) { if (strpos($encryptedField, '.') !== false) { $encryptedFieldSegments = explode('.', $encryptedField); $encryptedFieldSegment = array_shift($encryptedFieldSegments); if (!isset($controlValue[$encryptedFieldSegment])) { continue; } $valueReference = &$controlValue[$encryptedFieldSegment]; foreach ($encryptedFieldSegments as $encryptedFieldSegment) { if (!isset($valueReference[$encryptedFieldSegment])) { break; } $valueReference = &$valueReference[$encryptedFieldSegment]; $vaultCiphertext = strrev($valueReference[$encryptedField]); $valueReference[$encryptedField] = $vaultCiphertext; } unset($valueReference); } elseif (isset($controlValue[$encryptedField])) { $vaultCiphertext = strrev($controlValue[$encryptedField]); $controlValue[$encryptedField] = $vaultCiphertext; } } var_dump($controlValue);

preferences:
59.17 ms | 402 KiB | 5 Q