Here's a recursive solution that would work for any number of indices:
function set_by_indices(&$arr, $indices, $val) {
if (count($indices) == 1) {
$arr[$indices[0]] = $val;
} else {
set_by_indices($arr[$indices[0]], array_slice($indices, 1), $val);
}
}
$arr = array(array(array(1 => 1, 2 => 4),
array(1 => -1, 2 => -2)),
array(array(1 => 11, 2 => 14),
array(1 => -11, 2 => -12)));
$str = '0/0/1';
$indices = explode('/', $str);
print_r($arr);
set_by_indices($arr, $indices, 99);
echo '<br/>';
print_r($arr);
Output:
Array ( [0] => Array ( [0] => Array ( [1] => 1 [2] => 4 ) [1] => Array ( [1] => -1 [2] => -2 ) ) [1] => Array ( [0] => Array ( [1] => 11 [2] => 14 ) [1] => Array ( [1] => -11 [2] => -12 ) ) )
Array ( [0] => Array ( [0] => Array ( [1] => 99 [2] => 4 ) [1] => Array ( [1] => -1 [2] => -2 ) ) [1] => Array ( [0] => Array ( [1] => 11 [2] => 14 ) [1] => Array ( [1] => -11 [2] => -12 ) ) )