I have a PHP object and I am trying to get the value by the key without using a foreach.
If I do the below I am able to get the value:
$item_data_decode->meta_data[0]->value;
but the items may be in different orders so cannot count on this method and I need to use the key however this doesn't work:
$item_data_decode->meta_data['First Name'];
Code:
$item_data_decode = json_decode($item_values);
if (!empty($item_data_decode->meta_data)) {
$fName = $item_data_decode->meta_data['First Name']->value;
}
Object:
$a = new stdClass();
$a->meta_data = array();
$a->meta_data[0] = new stdClass();
$a->meta_data[0]->id = "2113";
$a->meta_data[0]->key = "First Name";
$a->meta_data[0]->value = "Recipient First Name";
$a->meta_data[1] = new stdClass();
$a->meta_data[1]->id = "2114";
$a->meta_data[1]->key = "Last Name";
$a->meta_data[1]->value = "Recipient Last Name";
$a->meta_data[2] = new stdClass();
$a->meta_data[2]->id = "2115";
$a->meta_data[2]->key = "addressLine 1";
$a->meta_data[2]->value = "Recipient Address Line 1";
$a->meta_data[3] = new stdClass();
$a->meta_data[3]->id = "2116";
$a->meta_data[3]->key = "addressLine2";
$a->meta_data[3]->value = "Recipient Address Line 2";
$a->meta_data[4] = new stdClass();
$a->meta_data[4]->id = "2117";
$a->meta_data[4]->key = "City";
$a->meta_data[4]->value = "Recipient Town/City";
$a->meta_data[5] = new stdClass();
$a->meta_data[5]->id = "2118";
$a->meta_data[5]->key = "Region";
$a->meta_data[5]->value = "Recipient Region/County";
$a->meta_data[6] = new stdClass();
$a->meta_data[6]->id = "2119";
$a->meta_data[6]->key = "Country";
$a->meta_data[6]->value = "N/A";
$a->meta_data[7] = new stdClass();
$a->meta_data[7]->id = "2120";
$a->meta_data[7]->key = "Postcode";
$a->meta_data[7]->value = "Recipient Postcode";
// outputs
[meta_data] => Array ( [0] => stdClass Object ( [id] => 2113 [key] => First Name [value] => Recipient First Name ) [1] => stdClass Object ( [id] => 2114 [key] => Last Name [value] => Recipient Last Name ) [2] => stdClass Object ( [id] => 2115 [key] => addressLine 1 [value] => Recipient Address Line 1 ) [3] => stdClass Object ( [id] => 2116 [key] => addressLine2 [value] => Recipient Address Line 2 ) [4] => stdClass Object ( [id] => 2117 [key] => City [value] => Recipient Town/City ) [5] => stdClass Object ( [id] => 2118 [key] => Region [value] => Recipient Region/County ) [6] => stdClass Object ( [id] => 2119 [key] => Country [value] => N/A ) [7] => stdClass Object ( [id] => 2120 [key] => Postcode [value] => Recipient Postcode ) )
Adding true to the json_decode provides the following:
Array ( [id] => 232 [order_id] => 320 [name] => Tb [product_id] => 50 [variation_id] => 0 [quantity] => 1 [tax_class] => [subtotal] => 50 [subtotal_tax] => 0 [total] => 50 [total_tax] => 0 [taxes] => Array ( [total] => Array ( ) [subtotal] => Array ( ) ) [meta_data] => Array ( ) ) Array ( [id] => 233 [order_id] => 320 [name] => Turtle Bay Gift Card [product_id] => 50 [variation_id] => 0 [quantity] => 1 [tax_class] => [subtotal] => 30 [subtotal_tax] => 0 [total] => 30 [total_tax] => 0 [taxes] => Array ( [total] => Array ( ) [subtotal] => Array ( ) ) [meta_data] => Array ( [0] => Array ( [id] => 2113 [key] => First Name [value] => Recipient First Name ) [1] => Array ( [id] => 2114 [key] => Last Name [value] => Recipient Last Name ) [2] => Array ( [id] => 2115 [key] => addressLine 1 [value] => Recipient Address Line 1 ) [3] => Array ( [id] => 2116 [key] => addressLine2 [value] => Recipient Address Line 2 ) [4] => Array ( [id] => 2117 [key] => City [value] => Recipient Town/City ) [5] => Array ( [id] => 2118 [key] => Region [value] => Recipient Region/County ) [6] => Array ( [id] => 2119 [key] => Country [value] => N/A ) [7] => Array ( [id] => 2120 [key] => Postcode [value] => Recipient Postcode ) ) )