Hướng dẫn get key value from object php - lấy giá trị khóa từ đối tượng php

Tôi có một đối tượng PHP và tôi đang cố gắng để có được giá trị bằng khóa mà không cần sử dụng foreach.

Nếu tôi làm dưới đây, tôi có thể nhận được giá trị:

$item_data_decode->meta_data[0]->value;

Nhưng các mục có thể nằm trong các đơn đặt hàng khác nhau, vì vậy không thể tin tưởng vào phương pháp này và tôi cần sử dụng khóa tuy nhiên điều này không hoạt động:

$item_data_decode->meta_data['First Name'];

Mã số:

$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 ] ]

Thêm true vào

$item_data_decode->meta_data['First Name'];
0 cung cấp những điều sau:

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 ] ] ]

Hỏi ngày 17 tháng 10 năm 2017 lúc 21:32Oct 17, 2017 at 21:32

Ben Hben hBen H

4921 Huy hiệu vàng6 Huy hiệu bạc22 Huy hiệu đồng1 gold badge6 silver badges22 bronze badges

1

Truy cập mỗi thuộc tính là cách bạn thường truy cập một thuộc tính của một đối tượng. Lưu ý rằng vì

$item_data_decode->meta_data['First Name'];
1 có không gian, nên không thể truy cập bằng ký hiệu mũi tên và phải được đặt trong niềng răng xoăn. Đối với bất kỳ tài sản nào không có không gian, không cần niềng răng xoăn.
Note that since
$item_data_decode->meta_data['First Name'];
1 has a space, it cannot be accessed by the arrow notation and must be enclosed in curly braces. For any property that doesn't have a space, there is no need for the curly braces.

Lý do mã của bạn bị lỗi là vì bạn đang cố gắng truy cập các thuộc tính bằng cách sử dụng ký hiệu khung vuông được sử dụng cho các mảng.

Tôi biết rằng bạn không thể chỉnh sửa đầu ra mảng thực tế, nhưng nếu bạn có thể chỉnh sửa JSON thì điều này sẽ giải quyết các vấn đề của bạn.

var_dump[$item_data_decode->meta_data->{"First name"}->value]; // outputs "Recipient First Name"

Đã trả lời ngày 17 tháng 10 năm 2017 lúc 22:19Oct 17, 2017 at 22:19

JustcartyjustcartyJustCarty

3,7045 huy hiệu vàng30 huy hiệu bạc50 huy hiệu đồng5 gold badges30 silver badges50 bronze badges

Cá nhân tôi sẽ chuẩn bị dữ liệu như thế này:

$item_data_decode = json_decode[$item_values, true];
$meta_array = array_combine[array_column[$item_data_decode['meta_data'], 'key'], $item_data_decode['meta_data']];

if [!empty[$meta_array['First Name']]] {
  $fName = $meta_array['First Name']['value'];
}

Thông số thứ hai trong

$item_data_decode->meta_data['First Name'];
0 đảm bảo nó chỉ trả về các mảng [thủ công.]. Bằng cách này, bạn có thể sử dụng hàm mảng như
$item_data_decode->meta_data['First Name'];
3 [thủ công] và ________ 14 [thủ công] và nhận một mảng rất gần với cấu trúc bạn muốn.

Trường hợp kiểm tra, vì không có mã nào là ngắn gọn cho nó.

Đã trả lời ngày 17 tháng 10 năm 2017 lúc 22:03Oct 17, 2017 at 22:03

jh2711jh2711jh2711

2.2781 Huy hiệu vàng11 Huy hiệu bạc20 Huy hiệu đồng1 gold badge11 silver badges20 bronze badges

6

Nếu bạn có thể sửa đổi cấu trúc mảng, thì cấu trúc nó như thế này:

array[
    'First Name'=>array[
        'id'=>2113,
        'value'=>'Recipient First Name'
    ],
    'Last Name'=>array[
        'id'=>2114,
        'value'=>'Recipient Last Name'
    ],
    . . .
];

Sau đó, bạn vẫn có thể sử dụng mảng này trong vòng lặp

$item_data_decode->meta_data['First Name'];
5 như trước đây nếu cần, mặc dù với một số thay đổi, trong khi có thể truy cập giá trị bạn muốn trực tiếp.

Nếu bạn không thể sửa đổi cấu trúc mảng, thì bạn sẽ không gặp may và một vòng lặp

$item_data_decode->meta_data['First Name'];
5 là bắt buộc nếu bạn muốn tìm giá trị bạn muốn.

Nếu mối quan tâm của bạn là hiệu suất truy cập mảng nhiều lần, thì hãy xem xét chuyển đổi mảng thành cấu trúc ở trên trước khi xử lý.

Chỉnh sửa

Ví dụ chuyển đổi mảng:

$transformed_array = array[];
foreach[$item_data_decode->meta_data as $data] {
    $transformed_array[$data['key']] = array[
        'id'=>$data['id'],
        'value'=>$data['value']
    ];
}

Đã trả lời ngày 17 tháng 10 năm 2017 lúc 21:44Oct 17, 2017 at 21:44

B. Flemingb. FlemingB. Fleming

7.0251 Huy hiệu vàng19 Huy hiệu bạc34 Huy hiệu đồng1 gold badge19 silver badges34 bronze badges

5

Làm thế nào có được khóa của một đối tượng trong PHP?

Để chỉ hiển thị các khóa từ một đối tượng, hãy sử dụng Array_Keys [] trong PHP.use array_keys[] in PHP.

Key $ trong PHP là gì?

Chức năng khóa [] chỉ đơn giản là trả về khóa của phần tử mảng hiện đang được chỉ ra bởi con trỏ bên trong.Nó không di chuyển con trỏ theo bất kỳ cách nào.Nếu con trỏ bên trong các điểm vượt ra ngoài phần cuối của danh sách các phần tử hoặc mảng trống, key [] trả về null.returns the key of the array element that's currently being pointed to by the internal pointer. It does not move the pointer in any way. If the internal pointer points beyond the end of the elements list or the array is empty, key[] returns null .

Làm thế nào để bạn tìm thấy chìa khóa của một mảng?

Hàm Array_Keys [] được sử dụng để lấy tất cả các phím hoặc một tập hợp con của các khóa của một mảng.Lưu ý: Nếu tìm kiếm tùy chọn_key_value được chỉ định, thì chỉ có các khóa cho giá trị đó được trả về.Nếu không, tất cả các phím từ mảng được trả về.array_keys[] function is used to get all the keys or a subset of the keys of an array. Note: If the optional search_key_value is specified, then only the keys for that value are returned. Otherwise, all the keys from the array are returned.

Làm thế nào để bạn kiểm tra xem một khóa có tồn tại trong một mảng PHP không?

Hàm ARRAY_KEY_EXISTS [] PHP ARRAYarray_key_exists[] Function The array_key_exists[] function checks an array for a specified key, and returns true if the key exists and false if the key does not exist.

Bài Viết Liên Quan

Chủ Đề