Trong phần này, chúng ta sẽ tìm hiểu tìm kiếm mảng nhiều chiều bằng cách sử dụng giá trị. Chúng tôi sẽ sử dụng PHP để làm điều này. Nếu chúng ta chưa biết về mảng nhiều chiều trong PHP thì ví dụ này sẽ rất hữu ích cho chúng ta. Trong ví dụ dưới đây của chúng tôi, chúng tôi sẽ sử dụng giá trị để tìm kiếm khóa của một mảng nhiều chiều. Nếu chúng ta muốn lấy giá trị từ một mảng nhiều chiều, chúng ta có thể dễ dàng thực hiện việc này bằng cách tìm kiếm giá trị khóa trong mảng
Trong ví dụ của chúng tôi, chúng tôi sẽ sử dụng một mảng đơn giản để giải thích ví dụ này. Chúng ta sẽ sử dụng hai mảng có tên là $students và $studentsAddress. Trong mảng $students của chúng ta, chúng ta sẽ sử dụng vòng lặp foreach. Trong mảng $studentsAddress của chúng tôi, chúng tôi cũng muốn hiển thị địa chỉ. Nhưng chúng tôi gặp sự cố vì ví dụ của chúng tôi có khóa user_id chứa một số bản ghi và id mảng đầu tiên. Để giải quyết vấn đề này, chúng ta sẽ sử dụng array_column[] và hàm của array_column
Mã đơn giản để tìm kiếm giá trị trong mảng nhiều chiều được mô tả như sau
Ví dụ đầy đủ để tìm kiếm giá trị trong mảng nhiều chiều được mô tả như sau
Ví dụ
Bây giờ mã trên của chúng tôi đã sẵn sàng và chúng tôi có thể chạy nó. Khi chúng tôi chạy cái này, đầu ra sau sẽ được tạo
Most of the array_flatten functions don't allow preservation of keys. Mine allows preserve, don't preserve, and preserve only strings [default].
// recursively reduces deep arrays to single-dimensional arrays
// $preserve_keys: [0=>never, 1=>strings, 2=>always]
function array_flatten[$array, $preserve_keys = 1, &$newArray = Array[]] {
foreach [$array as $key => $child] {
if [is_array[$child]] {
$newArray =& array_flatten[$child, $preserve_keys, $newArray];
} elseif [$preserve_keys + is_string[$key] > 1] {
$newArray[$key] = $child;
} else {
$newArray[] = $child;
}
}
return $newArray;
}
// Tests
$array = Array[
'A' => Array[
1 => 'foo',
2 => Array[
'a' => 'bar'
]
],
'B' => 'baz'
];
echo 'var_dump[$array];'."\n";
var_dump[$array];
echo 'var_dump[array_flatten[$array, 0]];'."\n";
var_dump[array_flatten[$array, 0]];
echo 'var_dump[array_flatten[$array, 1]];'."\n";
var_dump[array_flatten[$array, 1]];
echo 'var_dump[array_flatten[$array, 2]];'."\n";
var_dump[array_flatten[$array, 2]];
?>
Index_key is safely applicable only in cases when corresponding values of this index are unique through over the array. Otherwise only the latest element of the array with the same index_key value will be picked up.
$records = array[
array[
'id' => 2135,
'first_name' => 'John',
'last_name' => 'Doe',
'company_id' => 1,
],
array[
'id' => 3245,
'first_name' => 'Sally',
'last_name' => 'Smith',
'company_id' => 1,
],
array[
'id' => 5342,
'first_name' => 'Jane',
'last_name' => 'Jones',
'company_id' => 1,
],
array[
'id' => 5623,
'first_name' => 'Peter',
'last_name' => 'Doe',
'company_id' => 2,
]
];
$first_names = array_column[$records, 'first_name', 'company_id'];
print_r[$first_names];
?>
________số 8
Array
[
[1] => Jane
[2] => Peter
]
?>
// recursively reduces deep arrays to single-dimensional arrays
0
// $preserve_keys: [0=>never, 1=>strings, 2=>always]
function array_flatten[$array, $preserve_keys = 1, &$newArray = Array[]] {
foreach [$array as $key => $child] {
if [is_array[$child]] {
$newArray =& array_flatten[$child, $preserve_keys, $newArray];
} elseif [$preserve_keys + is_string[$key] > 1] {
$newArray[$key] = $child;
} else {
$newArray[] = $child;
}
}
return $newArray;
}
// recursively reduces deep arrays to single-dimensional arrays
1
// $preserve_keys: [0=>never, 1=>strings, 2=>always]
function array_flatten[$array, $preserve_keys = 1, &$newArray = Array[]] {
foreach [$array as $key => $child] {
if [is_array[$child]] {
$newArray =& array_flatten[$child, $preserve_keys, $newArray];
} elseif [$preserve_keys + is_string[$key] > 1] {
$newArray[$key] = $child;
} else {
$newArray[] = $child;
}
}
return $newArray;
}
// recursively reduces deep arrays to single-dimensional arrays
2
// $preserve_keys: [0=>never, 1=>strings, 2=>always]
function array_flatten[$array, $preserve_keys = 1, &$newArray = Array[]] {
foreach [$array as $key => $child] {
if [is_array[$child]] {
$newArray =& array_flatten[$child, $preserve_keys, $newArray];
} elseif [$preserve_keys + is_string[$key] > 1] {
$newArray[$key] = $child;
} else {
$newArray[] = $child;
}
}
return $newArray;
}
// recursively reduces deep arrays to single-dimensional arrays
3
// $preserve_keys: [0=>never, 1=>strings, 2=>always]
function array_flatten[$array, $preserve_keys = 1, &$newArray = Array[]] {
foreach [$array as $key => $child] {
if [is_array[$child]] {
$newArray =& array_flatten[$child, $preserve_keys, $newArray];
} elseif [$preserve_keys + is_string[$key] > 1] {
$newArray[$key] = $child;
} else {
$newArray[] = $child;
}
}
return $newArray;
}
// recursively reduces deep arrays to single-dimensional arrays
4
// $preserve_keys: [0=>never, 1=>strings, 2=>always]
function array_flatten[$array, $preserve_keys = 1, &$newArray = Array[]] {
foreach [$array as $key => $child] {
if [is_array[$child]] {
$newArray =& array_flatten[$child, $preserve_keys, $newArray];
} elseif [$preserve_keys + is_string[$key] > 1] {
$newArray[$key] = $child;
} else {
$newArray[] = $child;
}
}
return $newArray;
}
$records = array[
0
array[
'id' => 2135,
'first_name' => 'John',
'last_name' => 'Doe',
'company_id' => 1,
],
array[
'id' => 3245,
'first_name' => 'Sally',
'last_name' => 'Smith',
'company_id' => 1,
],
array[
'id' => 5342,
'first_name' => 'Jane',
'last_name' => 'Jones',
'company_id' => 1,
],
array[
'id' => 5623,
'first_name' => 'Peter',
'last_name' => 'Doe',
'company_id' => 2,
]
];