Duvida em array?

Tenho este codigo de array em php a matriz ele gera corretamente quando tento localizar um item dentro do array, no caso o item 10, a resposta esperada seria 20, mas o retorno diz que a linha 21 eh indefinida O que estaria em desacordo? Alguém pode ajudar???

<?php

for($i =0; $i < 20; $i++) {  
    $valores[] = array (
    $i => array(
        'cod_produto' => $i,
        'valor' => $i*2
    ));
};

$codProcura = 10;
$valor1 = 0;

for($x = 0; $x < 20; $x++) {    
    $search = $valores[$x];
    **///esta eh a linha 21..........**
    if($valores[$x]['cod_produto'] == $codProcura){ 
        $valor1 = $search['valor'];
        break;
    }
}
echo $valor1;

Na criação do array se colocou outro array acho desnecessário, acho que o correto seria isso:

<?php

for($i =0; $i < 20; $i++) {  
    $valores[] = array(
        'cod_produto' => $i,
        'valor' => $i*2
    );
};

$codProcura = 10;
$valor1 = 0;

for($x = 0; $x < 20; $x++) {    
    $search = $valores[$x];
    if($valores[$x]['cod_produto'] == $codProcura){ 
        $valor1 = $search['valor'];
        break;
    }
}
echo $valor1;

Exemplo Online: https://ideone.com/VgfBoZ