Vòng lặp foreach
chỉ hoạt động trên mảng và được sử dụng để lặp qua từng cặp khóa/giá trị trong một mảng
cú pháp
foreach [$mảng dưới dạng $value] {
mã được thực thi;
}
Đối với mỗi lần lặp lại, giá trị của phần tử mảng hiện tại được gán cho $value và con trỏ mảng được di chuyển một, cho đến khi nó chạm đến phần tử mảng cuối cùng
Nếu tên động, thì bạn phải có một cái gì đó như
$arr[$key]
điều đó có nghĩa là $key chứa giá trị của khóa
Bạn có thể sử dụng array_keys[]
để lấy TẤT CẢ các khóa của một mảng, e. g
$arr = array['a' => 'b', 'c' => 'd']
$x = array_keys[$arr];
sẽ cho bạn
$x = array[0 => 'a', 1 => 'c'];
If an associative array is used as the second parameter of array_fill_keys, then the associative array will be appended in all the values of the first array.
e.g.
$array1 = array[
"a" => "first",
"b" => "second",
"c" => "something",
"red"
];
$array2 = array[
"a" => "first",
"b" => "something",
"letsc"
];
print_r[array_fill_keys[$array1, $array2]];
?>
________số 8_______
If you don't want to lose duplicates, and you're ok, with having the values in the flipped array in an array as well, you may use this:
PHP 7.4 - ^8
function array_flip_safe[array $array] : array
{
return array_reduce[array_keys[$array], function [$carry, $key] use [&$array] {
$carry[$array[$key]] ??= [];
$carry[$array[$key]][] = $key;
return $carry;
}, []];
}
?>
PHP 7.0 - ^7.3 [Time to upgrade to PHP 8 ^^]
function array_flip_safe[array $array] : array
{
return array_reduce[array_keys[$array], function [$carry, $key] use [&$array] {
$carry[$array[$key]] = $carry[$array[$key]] ?? [];
$carry[$array[$key]][] = $key;
return $carry;
}, []];
}
?>
PHP 5.4 - ^5.6 [Just don't]
function array_flip_safe[array $array]
{
return array_reduce[array_keys[$array], function [$carry, $key] use [&$array] {
if [!isset[$carry[$array[$key]]]
$carry[$array[$key]] = [];
$carry[$array[$key]][] = $key;
return $carry;
}, []];
}
?>
$arr = array[1, 2, 3, 4];
foreach [$arr as &$value] {
$value = $value * 2;
}
// $arr is now array[2, 4, 6, 8]
// without an unset[$value], $value is still a reference to the last item: $arr[3]
foreach [$arr as $key => $value] {
// $arr[3] will be updated with each value from $arr...
echo "{$key} => {$value} ";
print_r[$arr];
}
// ...until ultimately the second-to-last value is copied onto the last value
// output:
// 0 => 2 Array [ [0] => 2, [1] => 4, [2] => 6, [3] => 2 ]
// 1 => 4 Array [ [0] => 2, [1] => 4, [2] => 6, [3] => 4 ]
// 2 => 6 Array [ [0] => 2, [1] => 4, [2] => 6, [3] => 6 ]
// 3 => 6 Array [ [0] => 2, [1] => 4, [2] => 6, [3] => 6 ]
?>
// Using short array syntax.
// Also, works with array[] syntax.
$arr1 = [1, 2, 3];
$arr2 = [...$arr1]; //[1, 2, 3]
$arr3 = [0, ...$arr1]; //[0, 1, 2, 3]
$arr4 = [...$arr1, ...$arr2, 111]; //[1, 2, 3, 1, 2, 3, 111]
$arr5 = [...$arr1, ...$arr1]; //[1, 2, 3, 1, 2, 3]
function getArr[] {
return ['a', 'b'];
}
$arr6 = [...getArr[], 'c' => 'd']; //['a', 'b', 'c' => 'd']
?>
In addition to FatBat's response, if you'd like to find out the highest key in an array [assoc or not] but don't want to arsort[] it, take a look at this:
$arr = [ '3' => 14, '1' => 15, '4' => 92, '15' => 65 ];
$key_of_max = array_search[ max[$arr] , $arr];
?>