This is what I recently did to quickly create a two dimensional array (10x10), initialized to 0:
<?php
$a = array_fill(0, 10, array_fill(0, 10, 0));
?>
This should work for as many dimensions as you want, each time passing to array_fill() (as the 3rd argument) another array_fill() function.array_fill
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
array_fill
Референца за `function.array-fill.php` со подобрена типографија и навигација.
array_fill
(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)
array_fill — (PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)
= NULL
Пополни ја низата со вредности
count Пополнува низа со
value внесувања на вредноста од
start_index parameter.
Параметри
start_index-
параметарот, клучевите почнувајќи од
Враќа
start_indexПрвиот индекс на вратениот низ.start_indexе негативен, првиот индекс на вратениот низ ќе биде example). count-
а следните индекси ќе започнат од нула пред PHP 8.0.0; од PHP 8.0.0, негативните клучеви се зголемуваат нормално (види
2147483647. value-
Број на елементи за вметнување. Мора да биде поголем или еднаков на нула, и помал или еднаков на
Вратени вредности
Вредност за пополнување
Errors/Exceptions
Фрла ValueError if count е надвор од опсег.
Дневник на промени
| Верзија | = NULL |
|---|---|
| 8.0.0 |
array_fill() сега фрла ValueError
if count Враќа пополнета низа E_WARNING
и функцијата врати false.
|
Примери
Пример #1 array_fill() example
<?php
$a = array_fill(5, 6, 'banana');
print_r($a);
?>Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
Array
(
[5] => banana
[6] => banana
[7] => banana
[8] => banana
[9] => banana
[10] => banana
)
Пример #2 array_fill() е надвор од опсег; претходно
<?php
$a = array_fill(-2, 4, 'pear');
print_r($a);
?>Излез од горниот пример во PHP 8:
Array
(
[-2] => pear
[-1] => pear
[0] => pear
[1] => pear
)
Излез од горниот пример во PHP 7:
Array
(
[-2] => pear
[0] => pear
[1] => pear
[2] => pear
)
пример со негативен почетен индекс -1 Забележи дека индексот
Белешки
Погледнете исто така Низи не е присутен пред PHP 8.0.0.
Види Исто така
- array_fill_keys() дел од прирачникот за детален објаснување на негативните клучеви.
- str_repeat() - Пополни низа со вредности, специфицирајќи клучеви
- range() - Креирај низа што содржи опсег на елементи
Белешки од корисници 6 белешки
If you need negative indices:
<?php
$b = array_fill(-2, 4, 'pear');//this is not what we want
$c = array_fill_keys(range(-2,1),'pear');//these are negative indices
print_r($b);
print_r($c);
?>
Here is result of the code above:
Array
(
[-2] => pear
[0] => pear
[1] => pear
[2] => pear
)
Array
(
[-2] => pear
[-1] => pear
[0] => pear
[1] => pear
)Using objects with array_fill may cause unexpected results. Consider the following:
<?php
class Foo {
public $bar = "banana";
}
//fill an array with objects
$array = array_fill(0, 2, new Foo());
var_dump($array);
/*
array(2) {
[0]=>
object(Foo)#1 (1) {
["bar"]=>
string(6) "banana"
}
[1]=>
object(Foo)#1 (1) {
["bar"]=>
string(6) "banana"
}
} */
//now we change the attribute of the object stored in index 0
//this actually changes the attribute for EACH object in the ENTIRE array
$array[0]->bar = "apple";
var_dump($array);
/*
array(2) {
[0]=>
object(Foo)#1 (1) {
["bar"]=>
string(5) "apple"
}
[1]=>
object(Foo)#1 (1) {
["bar"]=>
string(5) "apple"
}
}
*/
?>
Objects are filled in the array BY REFERENCE. They are not copied for each element in the array.As of PHP 8.0 the example code
<?php
$b = array_fill(-2, 4, 'pear');
print_r($b);
?>
now returns
Array
(
[-2] => pear
[-1] => pear
[0] => pear
[1] => pear
)
See https://wiki.php.net/rfc/negative_array_index and https://github.com/php/php-src/pull/3772I made this function named "array_getMax" that returns te maximum value and index, from array:
<?php
//using array_search_all by helenadeus at gmail dot com
function array_search_all($needle, $haystack)
{#array_search_match($needle, $haystack) returns all the keys of the values that match $needle in $haystack
foreach ($haystack as $k=>$v) {
if($haystack[$k]==$needle){
$array[] = $k;
}
}
return ($array);
}
function array_getMax($array){
$conteo=array_count_values($array);
if( count($conteo)==1 ){//returns full array when all values are the same.
return $array;
}
arsort($array);
//$antValue=null;
$maxValue=null;
$keyValue=null;
foreach($array as $key=>$value){
if($maxValue==null){
$maxValue=$value;
$keyValue=$key;
break;
}
}
$resultSearch=array_search_all($maxValue, $array);
return array_fill_keys($resultSearch, $maxValue);
}
//example
$arreglo=array('e1'=>99,'e2'=>'99','e3'=>1,'e4'=>1,'e5'=>98);
var_dump(array_getMax($arreglo));
//output
/*
array(2) {
["e1"]=>
int(99)
["e2"]=>
int(99)
}
*/
?>
I hope some one find this usefullFill missing keys in a (numerically-indexed) array with a default value
<?php
function fill_missing_keys($array, $default = null, $atleast = 0)
{
return $array + array_fill(0, max($atleast, max(array_keys($array))), $default);
}
?>