dwing265
dwing265

Reputation: 120

PHP: How can I get the value from a key in a multiple array

The multiple array looks like

Array
(
    [id] => description
    [header] => 
    [width] => 20
    [dbfield] => description
    [type] => text
)
Array
(
    [id] => quantity
    [header] => Menge
    [dbfield] => QUANTITY_NEW
    [width] => 60
    [type] => decimal
)

How can I get the value from dbfield where id is 'quantity' without knowing the numeric value of the id?

The actual code looks like

foreach($array as $id => $fieldData) {

   if($fieldData['type'] == 'decimal') 
   {
     doSomething...();
   }
}

In the part with doSomething I need access to other fields from the array, but I only know the id. I already tried it with dbfield['quantity']['dbfield'] etc. which obviously fails.

Upvotes: 0

Views: 122

Answers (3)

Arrow
Arrow

Reputation: 49

echo out the array as such..

$array = array();

$array['qty'] = 'qtty';
$array['dbfield'] = 'QUANTITY_NEW';

if($array['qty'] = 'qtty'){

echo $array['dbfield'];

} 

returns - QUANTITY_NEW

Upvotes: 1

ilpaijin
ilpaijin

Reputation: 3695

A simple alternative using array_keys:

function getValues($data, $lookForValue, $column)
{
    $res = array();

    foreach ($data as $key => $data) 
    {
        if($idx = array_keys($data, $lookForValue))
        {
            $res[$idx[0]] = $data[$column];
        }
    } 

    return $res;
}

$values = getValues($myData, "quantity", "dbfield");

var_dump($values);

Upvotes: 1

hlscalon
hlscalon

Reputation: 7552

You can do this with several methods, one of them is using array_map to get those values:

$dbfield = array_filter(array_map(function($a){
    if($a["id"] === "quantity"){
        return $a["dbfield"];
    }
}, $array));

print_r($dbfield);

You iterate over the array, and return the key dbfield where id is 'quantity'. Array filter is just to not return null values where it doesn't have 'quantity' id.

Online attempt to reproduce your code can be found here

Upvotes: 0

Related Questions