Mảng đa chiều động trong PHP
Mảng đa chiều PHP còn được gọi là mảng của mảng. Nó cho phép bạn lưu trữ dữ liệu dạng bảng trong một mảng. Mảng đa chiều PHP có thể được biểu diễn dưới dạng ma trận được biểu diễn bằng hàng * cột Show Sự định nghĩaVí dụ mảng đa chiều PHPHãy xem một ví dụ đơn giản về mảng đa chiều PHP để hiển thị dữ liệu dạng bảng sau. Trong ví dụ này, chúng tôi đang hiển thị 3 hàng và 3 cột Chúng tôi biết cách truy cập các mục mảng PHP. Nếu chúng ta biết số lượng khóa và tên của khóa, chúng ta có thể đặt giá trị cho một mục mảng nhiều chiều $key1 = 'a'; $key2 = 'b'; $key3 = 'c'; $arr[$key1][$key2][$key3] = 'my value';
$arr = array( 'a' => array( 'b' => array( 'c'=>100, ) ), 'x' => array(), );
$keys = array('a', 'b','c');
$arr['a']['b']['c'] = '500';
/** * Insert new item to a multidimensional array where sequence of keys are stored in an array. * @param array() $arr . Array where the value will be inserted. This array can be empty. * @param array() $key_chain. Array of keys where a key is the parent of the next key. Keys can be number, string or event BLANK string. * @param mixed $value. The value that you want to insert to the array. * @return bool. True for success and false for fail. */ function insert_into_array_by_key_chain(&$arr, $key_chain, $value ) { if( !is_array( $key_chain ) || count( $key_chain ) == 0 ){ return false; } $ref = &$arr;//take the reference of the array. foreach( $key_chain as $key ) { $key = trim( $key ); if( $key == '') { $ref[] = array(); //Just a fake value. This will be overridden on next cycle or after the loop. This fake value must be an array to avoid error for next valid non blank key. end($ref); //set the internal pointer of array to the last item. $ref = &$ref[key($ref)]; //take the reference of the last inserted fake item. Function key() returns the key of current item of the array. In this case it is last item. } else { $ref = &$ref[$key]; //take the new reference of the item of child array based on the key from the current reference. } } $ref = $value; //Assign the value to the calculated reference. unset($ref);//must unset the $ref , otherwise it can produce unpredictable results. See the example here http://php.net/manual/en/language.references.php#83325 return true; } Ví dụ sử dụng $arr = array( 'a' => array( 'b' => array( 'c' => 100, ) ), 'x' => array(), ); $keys = array('a', 'b','c'); insert_into_array_by_key_chain($arr, $keys, 500 ); $keys = array('a', 'b','d'); insert_into_array_by_key_chain($arr, $keys, 600 ); $keys = array('a', 'b','e',''); insert_into_array_by_key_chain($arr, $keys, 'hello' ); insert_into_array_by_key_chain($arr, $keys, 'world' );
Array ( [a] => Array ( [b] => Array ( ['c'] => 500 [d] => 600 [e] => Array ( [0] => hello [1] => world ) ) ) [x] => Array ( ) ) 1 2 3 4 5 6 7 8 9 10 11 122_______70__________ 1 2 3 4 5 6 7 8 9 10 11 1238_______70_______ 1 2 3 4 5 6 7 8 9 10 11 1240 1 2 3 4 5 6 7 8 9 10 11 128 1 2 3 4 5 6 7 8 9 10 11 1242 1 2 3 4 5 6 7 8 9 10 11 120 1 2 3 4 5 6 7 8 9 10 11 121 int 1 2 3 4 5 6 7 8 9 10 11 1246 1 2 3 4 5 6 7 8 9 10 11 122_______12_______7 int 71 2 3 4 5 6 7 8 9 10 11 121 int 9int ___main( 1_______7_______8main( 31 2 3 4 5 6 7 8 9 10 11 120 1 2 3 4 5 6 7 8 9 10 11 121 int 12_______3
1 2 3 4 5 6 7 8 9 10 11 122______76_______9 1 2 3 4 5 6 7 8 9 10 11 122 void 11 2 3 4 5 6 7 8 9 10 11 122_______12_______7 int 71 2 3 4 5 6 7 8 9 10 11 121 1 2 3 4 5 6 7 8 9 10 11 127 void 71 2 3 4 5 6 7 8 9 10 11 125 void 91 2 3 4 5 6 7 8 9 10 11 1272
1 2 3 4 5 6 7 8 9 10 11 122_______12_______7 int 71 2 3 4 5 6 7 8 9 10 11 121 1 2 3 4 5 6 7 8 9 10 11 127 void 71 2 3 4 5 6 7 8 9 10 11 125 1 2 3 4 5 6 7 8 9 10 11 126 1 2 3 4 5 6 7 8 9 10 11 121 1 2 3 4 5 6 7 8 9 10 11 128 1 2 3 4 5 6 7 8 9 10 11 1211
1 2 3 4 5 6 7 8 9 10 11 122_______7_______13 1 2 3 4 5 6 7 8 9 10 11 1286 1 2 3 4 5 6 7 8 9 10 11 1215
1 2 3 4 5 6 7 8 9 10 11 122_______12_______7 1 2 3 4 5 6 7 8 9 10 11 121 int 1 2 3 4 5 6 7 8 9 10 11 1220 1 2 3 4 5 6 7 8 9 10 11 121 #include 81 2 3 4 5 6 7 8 9 10 11 1223
1 2 3 4 5 6 7 8 9 10 11 122_______87_______8 1 2 3 4 5 6 7 8 9 10 11 1298
1 2 3 4 5 6 7 8 9 10 11 122_______89_______1 #include 2
đầu ra. 1 2 3 4 5 6 7 8 9 10 11 12 4) Sử dụng con trỏ kép và một lệnh gọi malloc C1 2 3 4 5 6 7 8 9 10 11 1203 1 2 3 4 5 6 7 8 9 10 11 1204
1 2 3 4 5 6 7 8 9 10 11 121 1 2 3 4 5 6 7 8 9 10 11 122_______70_______ 1 2 3 4 5 6 7 8 9 10 11 1210 1 2 3 4 5 6 7 8 9 10 11 122_______70_______ 1 2 3 4 5 6 7 8 9 10 11 1213 1 2 3 4 5 6 7 8 9 10 11 122_______70_______ 1 2 3 4 5 6 7 8 9 10 11 1216
1 2 3 4 5 6 7 8 9 10 11 122_______12_______18 1 2 3 4 5 6 7 8 9 10 11 120 1 2 3 4 5 6 7 8 9 10 11 121 int 1 2 3 4 5 6 7 8 9 10 11 1222 1 2 3 4 5 6 7 8 9 10 11 120 1 2 3 4 5 6 7 8 9 10 11 121 int 1 2 3 4 5 6 7 8 9 10 11 1226 Làm cách nào để tạo mảng đa chiều trong PHP một cách linh hoạt?PHP cho phép một cách rất đơn giản để khai báo một mảng nhiều chiều trong PHP bằng cách sử dụng từ khóa 'mảng' . Để khai báo một mảng bên trong một mảng khác, chúng ta cần thêm từ khóa 'mảng' và sau đó là các phần tử của mảng đó.
Làm cách nào để khai báo mảng động trong PHP?Vì PHP được nhập động nên bạn không cần khai báo một mảng hoặc chỉ định một loại biến cụ thể mà mảng đó chứa . Tuy nhiên, có một số cách mà bạn có thể khởi tạo một mảng. Để tạo một mảng trống, bạn có thể gọi hàm array().
PHP có mảng động không?Có, mảng PHP là mảng động , theo nghĩa là người ta có thể tạo mảng, chèn phần tử mới, xóa phần tử, v.v.
Làm cách nào để tạo mảng đa chiều từ mảng trong PHP?Bạn tạo một mảng nhiều chiều sử dụng cấu trúc array() , giống như tạo một mảng thông thường. Sự khác biệt là mỗi phần tử trong mảng bạn tạo chính là một mảng. Ví dụ. $myArray = mảng(mảng(giá trị1,giá trị2,giá trị3),mảng(giá trị4,giá trị5,giá trị6),mảng(giá trị7,giá trị8,giá trị9)); |