Đối tượng JavaScript với mảng kết hợp php

Mảng PHP có thể được sử dụng trong JavaScript, bất kể mảng đó là mảng đơn hay đa chiều, được lập chỉ mục hay mảng kết hợp. Bạn có thể dễ dàng chuyển đổi mảng PHP thành mảng JavaScript chỉ bằng một dòng mã. Sử dụng hàm json_encode(), mảng PHP có thể được chuyển đổi thành mảng JavaScript và có thể truy cập bằng JavaScript

Mảng được lập chỉ mục một chiều

Ví dụ sau chuyển đổi mảng PHP được lập chỉ mục bằng số thành mảng JavaScript
PHP

$userArray = array('John Doe', '[email protected]');

JavaScript

Truy cập các phần tử mảng trong JavaScript

alert(users[0]); //output will be "John Doe"

Mảng lập chỉ mục đa chiều

Ví dụ sau chuyển đổi mảng đa chiều PHP được lập chỉ mục số thành mảng JavaScript
PHP

$userArray = array(
    array('John Doe', '[email protected]'),
    array('Marry Moe', '[email protected]'),
    array('Smith Watson', '[email protected]')
);

JavaScript

Truy cập các phần tử mảng trong JavaScript

alert(users[1][0]); //output will be "Marry Moe"

Mảng kết hợp đa chiều

Ví dụ sau chuyển đổi mảng đa chiều PHP kết hợp thành mảng JavaScript
PHP

$userArray = array(
    array('name'=>'John Doe', 'email'=>'[email protected]'),
    array('name'=>'Marry Moe', 'email'=>'[email protected]'),
    array('name'=>'Smith Watson', 'email'=>'[email protected]')
);

JavaScript

Truy cập các phần tử mảng trong JavaScript

________số 8_______

Nếu một đối tượng được chuyển đổi thành một mảng, kết quả là một mảng có các phần tử là thuộc tính của đối tượng. Các khóa là tên biến thành viên, với một số ngoại lệ đáng chú ý như thuộc tính số nguyên không thể truy cập được và các biến được bảo vệ có '*' được thêm vào trước tên biến. Các giá trị được thêm vào trước này có các byte rỗng ở hai bên


Thí dụ. đối tượng đơn giản

$object = new StdClass; 
$object->foo = 1; 
$object->bar = 2; 

var_dump( (array) $object );

đầu ra

array(2) { 
        'foo' => int(1) 
        'bar' => int(2) 
}

Thí dụ. đối tượng phức tạp

class Foo 
{ 

        private $foo; 
        protected $bar; 
        public $baz; 

        public function __construct() 
        { 

                  $this->foo = 1; 
                  $this->bar = 2; 
                  $this->baz = new StdClass; 
        } 
} 

var_dump( (array) new Foo );

Đầu ra (với \0s được chỉnh sửa cho rõ ràng)

array(3) { 
      '\0Foo\0foo' => int(1) 
      '\0*\0bar' => int(2) 
      'baz' => class stdClass#2 (0) {} 
}

Xuất ra với var_export thay vì var_dump

array ( 
      '' . "\0" . 'Foo' . "\0" . 'foo' => 1, 
      '' . "\0" . '*' . "\0" . 'bar' => 2, 
      'baz' => 
      stdClass::__set_state(array( 
  )), 
)

Đánh máy theo cách này sẽ không truyền sâu biểu đồ đối tượng và bạn cần áp dụng các byte rỗng để truy cập bất kỳ thuộc tính không công khai nào. Vì vậy, điều này hoạt động tốt nhất khi truyền đối tượng StdClass hoặc đối tượng chỉ có thuộc tính công khai

Hướng dẫn này sẽ giúp bạn tìm hiểu cách chuyển đổi một mảng PHP đơn, đa chiều, được lập chỉ mục và kết hợp thành một mảng JavaScript

Chuyển đổi mảng đơn PHP thành mảng JavaScript

Khi bạn có một mảng PHP duy nhất, bạn có thể chuyển đổi nó thành một mảng JavaScript bằng cách gọi hàm PHP json_encode()

Bạn cần lưu trữ kết quả của json_encode() trong một biến JavaScript như sau



// 👇 create a PHP array
$users = ["Nathan", "Jack", "Jane"]; 
?>

<body>

<script>
const users =  echo json_encode($users); ?>;
console.log(Array.isArray(users));
console.log(users);
script>
body>

Kết quả nhật ký giao diện điều khiển sẽ như sau

true
(3) ['Nathan', 'Jack', 'Jane']

Đó là cách bạn chuyển đổi một mảng PHP thành một mảng JavaScript

Chuyển đổi mảng đa chiều PHP thành mảng JavaScript

Vì JavaScript cũng có khái niệm mảng đa chiều, nên bạn cũng có thể chuyển đổi mảng đa chiều PHP sang JavaScript bằng cách sử dụng json_encode()

Xem xét ví dụ sau


// 👇 a PHP multi-dimensional array
$users = [
    ["apple", "orange"], 
    ["cucumber", "lettuce"], 
    ["rose", "jasmine"]
];
?>

<body>

<script>
const users =  echo json_encode($users); ?>;
console.log(Array.isArray(users));
console.log(users);
script>
body>

Đầu ra nhật ký giao diện điều khiển như hình bên dưới

true
(3) [Array(2), Array(2), Array(2)]
(2) ['apple', 'orange']
(2) ['cucumber', 'lettuce']
(2) ['rose', 'jasmine']

Chuyển đổi mảng kết hợp PHP thành mảng JavaScript

Khi bạn có một mảng PHP kết hợp, việc gọi json_encode() sẽ biến mảng đó thành một đối tượng JavaScript

Vì một đối tượng JavaScript tương tự như một mảng kết hợp, nên bạn cũng có thể truy cập giá trị bằng cách sử dụng khóa

Hãy xem xét ví dụ dưới đây


// 👇 create a PHP associative array
$my_array = [
    "name" => "nathan",
    "age" => 28,
];
?>

<body>

<script>
const arr =  echo json_encode($my_array); ?>;

// 👇 the result will not be an array according to JavaScript
console.log(Array.isArray(arr));

// 👇 access the object properties like associative array
console.log(arr["name"]);
console.log(arr["age"]);
script>
body>

Nhật ký giao diện điều khiển ở trên sẽ tạo ra đầu ra sau

false
nathan
28

Như bạn có thể thấy, hàm

true
(3) ['Nathan', 'Jack', 'Jane']
4 trả về
true
(3) ['Nathan', 'Jack', 'Jane']
5 vì biến
true
(3) ['Nathan', 'Jack', 'Jane']
6 được xác định là một đối tượng, không phải một mảng

Trong JavaScript, một mảng kết hợp được xác định là một đối tượng nhưng không phải là một mảng

Mặc dù nó không được xác định là một mảng, nhưng bạn có thể sử dụng cú pháp tương tự để truy cập giá trị của mảng kết hợp như trong ví dụ trên

Chuyển đổi mảng được lập chỉ mục PHP thành mảng JavaScript

PHP và JavaScript có cùng hệ thống lập chỉ mục mặc định cho mảng, vì vậy bạn có thể chuyển đổi một mảng được lập chỉ mục như một mảng thông thường


// 👇 create a PHP array
$users = [
    0 => "Nathan",
    1 => "Jack", 
    2 => "Jane"
]; 
?>

<body>
<script>
const users =  echo json_encode($users); ?>;
console.log(Array.isArray(users));
console.log(users);
script>
body>

Khi bạn có một mảng với các số chỉ mục tùy chỉnh, thì JavaScript sẽ hiểu mảng đó là một đối tượng

Nhưng không sao vì bạn vẫn có thể truy cập giá trị mảng bằng cách sử dụng chỉ mục như bên dưới


// 👇 custom index for the array
$users = [
    11 => "Nathan",
    22 => "Jack", 
    33 => "Jane"
]; 
?>

<body>
<script>
const users =  echo json_encode($users); ?>;
console.log(Array.isArray(users));
console.log(users);
console.log(users[33]);
script>
body>

Đoạn mã trên sẽ tạo ra các bản ghi sau

false
{11: 'Nathan', 22: 'Jack', 33: 'Jane'}
Jane

Mặc dù mảng được lập chỉ mục được chuyển đổi thành một đối tượng, bạn vẫn có thể truy cập các giá trị giống như một mảng

Làm cách nào để chuyển đổi một đối tượng thành một mảng kết hợp trong PHP?

Phương pháp 1. Sử dụng phương thức json_decode và json_encode . Hàm json_decode chấp nhận chuỗi được mã hóa JSON và chuyển đổi nó thành một biến PHP, mặt khác, json_encode trả về một chuỗi được mã hóa JSON cho một giá trị nhất định. cú pháp. $myArray = json_decode(json_encode($object), true);

Làm cách nào để chuyển đổi đối tượng thành mảng kết hợp trong JavaScript?

var data = [ {'id'. 100, tên. 'bob', foo. 'thanh'}, {'id'. 200, tên. 'john', foo. 'qux'} ]; . data. forEach(function(item){ var key = item. Tôi; . Tôi; . log(result); Lưu ý, giải pháp này sẽ sửa đổi mảng ban đầu.

Làm cách nào để chuyển một đối tượng thành một mảng trong PHP?

Nhập đối tượng vào một mảng . $foodArray = (array)$food; echo "Sau khi chuyển đổi. "; var_dump($foodArray);

Bạn sẽ sử dụng đối tượng làm mảng kết hợp như thế nào?

Mảng kiểu này được gọi là "mảng kết hợp". Một ví dụ về việc sử dụng ký hiệu mảng kết hợp để truy cập các thuộc tính đối tượng được minh họa trong đoạn mã sau. var object1 = đối tượng mới; . tên = "Joanne"; . tuổi = 27; .