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

2

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

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

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

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.7145 huy hiệu vàng30 Huy hiệu bạc 50 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.0451 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.

Làm thế nào để bạn truy cập các thuộc tính của một đối tượng trong PHP?

Trong các phương thức lớp các thuộc tính không tĩnh có thể được truy cập bằng cách sử dụng-> (toán tử đối tượng): $ this-> thuộc tính (trong đó thuộc tính là tên của thuộc tính).Thuộc tính tĩnh được truy cập bằng cách sử dụng :: (Double Colon): Self :: $ $ thuộc tính.non-static properties may be accessed by using -> (Object Operator): $this->property (where property is the name of the property). Static properties are accessed by using the :: (Double Colon): self::$property .

Key $ trong PHP là gì?

Hàm Php ().Hàm khóa () trả về phím phần tử từ vị trí con trỏ bên trong hiện tại.returns the element key from the current internal pointer position.

Đối tượng STDCLASS trong PHP là gì?

STDCLASS là lớp trống trong PHP được sử dụng để đúc các loại khác để đối tượng.Nó tương tự như đối tượng Java hoặc Python.STDClass không phải là lớp cơ sở của các đối tượng.Nếu một đối tượng được chuyển đổi thành đối tượng, nó không được sửa đổi.the empty class in PHP which is used to cast other types to object. It is similar to Java or Python object. The stdClass is not the base class of the objects. If an object is converted to object, it is not modified.