Search code examples
phparraysmultidimensional-arraykey

PHP, Changing values in an multidimensional array


I got the following Array in PHP:

$data[] = array('Slug' => 'jan', 'Name' => 'Jan', 'Alter' => '39', 'Jahrgang' => '1981', 'ID' => '3');
$data[] = array('Slug' => 'kjell', 'Name' => 'Kjell', 'Alter' => '4', 'Jahrgang' => '2018', 'ID' => '0');
$data[] = array('Slug' => 'bjarne', 'Name' => 'Bjarne', 'Alter' => '6', 'Jahrgang' => '2015', 'ID' => '2');
$data[] = array('Slug' => 'monika', 'Name' => 'Monika', 'Alter' => '72', 'Jahrgang' => '1950', 'ID' => '1');

How can I output the Value of "Jahrgang" where "Slug = Jan"?

How can I change the "Jahrgang" where "Slug = Jan" from 1981 to 1982?

Is there any way without a foreach?

Thank you so much!


Solution

  • I would opt to slightly restructure the data for easier access, by setting the array key to the Slug value.

    $data['jan'] = array('Name' => 'Jan', 'Alter' => '39', 'Jahrgang' => '1981', 'ID' => '3');
    $data['kjell'] = array('Name' => 'Kjell', 'Alter' => '4', 'Jahrgang' => '2018', 'ID' => '0');
    $data['bjarne'] = array('Name' => 'Bjarne', 'Alter' => '6', 'Jahrgang' => '2015', 'ID' => '2');
    $data['monika'] = array('Name' => 'Monika', 'Alter' => '72', 'Jahrgang' => '1950', 'ID' => '1');
    

    This would allow you to access or set any values using that key.

    //access
    $info = $data['jan']; //array('Name' => 'Jan', 'Alter' => '39', 'Jahrgang' => '1981', 'ID' => '3')
    
    //set
    $data['jan']['Name'] = 'Not Jan';
    
    //loop
    foreach($data as $slug => $info) {
        //$info = array('Name' => 'Jan', 'Alter' => '39', 'Jahrgang' => '1981', 'ID' => '3')
    }
    

    Another plus side to this method in your case is it makes sure each "Slug" is unique, because arrays cannot contain duplicate keys.