Find value inside an array

3

I have the following array:

    array (size=80)
    0 => 
    array (size=2) 
        ‘cod_produto' => int 107 
        'valor' => float 20 
    1 =>
       
    array (size=2) 
        ‘cod_produto' => int 109 
        'valor' => float 375.8 
    2 => 
    array (size=2) 
        ‘cod_produto' => int 112 
        'valor' => float 20

I'm putting it like this:

Loop {

    // Monta array
    $valores[] = array(
        "cod_produto" => (int) $resultado_precos-> cod_produto,
        "valor" => (float) $resultado_precos->valor
    );
}

The array is in a variable $valores , I need to indent the value of the product in a report, but I only have cod_produto .

I need to search the array for the value of the product and if the value does not exist I have to display the value as zero.

In short, I have the product code and need to find the price of it in this array.

    
asked by anonymous 03.05.2018 / 20:15

2 answers

4

I would do so:

$valores = array (

    0 => 
    array(
        'cod_produto' => 107,
        'valor' => 20 
    ),

    1 =>     
    array (
        'cod_produto' => 109 ,
        'valor' => 375.8 
    ),

    2 => 
    array(
        'cod_produto' => 112 ,
        'valor' => 20
    )

);

$codProcura = 112;
$valor = 0;

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

echo $valor;

See in ideon

There is another way to use the array_search , as it was array_search quoted by @VitorAndre, along with the array_colum

>

So:

$valor = 0;
$local = array_search(112, array_column($valores, 'cod_produto'));
$valor = $valores[$local]['valor'];
echo $valor;
    
03.05.2018 / 20:22
2

You can also use a function with foreach :

$valores = array(
   array('cod_produto' => 101,'valor' => 200),
   array('cod_produto' => 102,'valor' => 300),
   array('cod_produto' => 103,'valor' => 400)
);

$buscar = 102; // código do produto a buscar

function encontrar($array, $chave, $valor){
   foreach($array as $key => $value){
      if($value[$chave] == $valor){
         return $array[$key]['valor'];
      }
   }
}

$resultado = encontrar($valores, 'cod_produto', $buscar);
$cod_produto = $resultado ? $resultado : '0';
echo $cod_produto; // retorna 300

See it on Ideone

    
03.05.2018 / 20:56