Notatki PHP

prywatne zapiski na kamieniu

array_flip (array $tabela)

array_flip() zwraca tablicę w odwróconym porządku, tzn. klucze z tabeli $tabela stają się wartościami, a wartości $tabela stają się kluczami.

Zauważ, że wszystkie wartości tablicy $tabela muszą mieć poprawne klucze, tzn. muszą być albo typu integer lub string. Jeśli wartość nie ma prawidłowego typu, wyświetlone zostanie ostrzeżenie, a para klucz/wartość nie będzie odwrócona.

Jeśli wartość występuje wielokrotnie, ostatni klucz będzie użyty jako jej wartość po odwróceniu, a wszystkie inne zostaną stracone.

array_flip() zwraca FALSE, jeśli nie powiedzie się odwracanie tablicy.

 
$tablica4 = array ("a" => "zielony", "czerwony", "niebieski", "czerwony", "fioletowy");
 
$c = array_flip ($tablica4); 
print_r($c);
 
Array ( [zielony] =>[czerwony] => 2 [niebieski] => 1 [fioletowy] => 3 ) 
 
$tablica1 = array ("zielony", "czerwony", "niebieski", "czarny", "fioletowy");
$c = array_flip ($tablica1); 
print_r($c);
 
Array ( [zielony] => 0 [czerwony] => 1 [niebieski] => 2 [czarny] => 3 [fioletowy] => 4 ) 

 

 
$input = array("a" => 1, "b" => 1, "c" => 2);
$flipped = array_flip($input);
 
print_r($flipped);
 
Array ( [1] =>[2] =>) 

 

Czasami funkcja potrafi zgubić pewne powtarzające się w tablicy elementy:

 
$a = array('one', 'two', 'one');
    print_r($a);
 
    $b = array_flip($a);
    print_r($b);
 
array(3) {
  [0]  => string(3) "one"
  [1]  =>  string(3) "two"
  [2]  =>  string(3) "one"
}
 
array(2) {
  'one' => int(2)
  'two' => int(1)
}

Rezultatem funkcji są ostatni i przedostatni element tablicy.

 

Czasami funkcja potrafi zaskakiwać:

 
 
$intArray1 = array(-4,1,1,3);
print_r($intArray1);
$intArray2 = array_flip($intArray1);
print_r($intArray2);
 
Array 
( 
[-4] => 0 
[1] => 2 
[3] => 3 
) 

 

Czyścimy tablicę z pustych elementów null:

 
$ar = array(null,'1','2',null,'3',null);
print_r($ar);

Wyświetli to naszą tablicę:

 
Array
(
    [0] =>
    [1] => 1
    [2] => 2
    [3] =>
    [4] => 3
    [5] =>
)

Odwracamy:

 
print_r(array_flip(array_flip($ar)));

Efektem jest tablica bez elementów null:

 
Array
(
    [1] => 1
    [2] => 2
    [4] => 3
)

 

Czyścimy tablicę z wybranego elementu:

 
$arr = array(11,12,13,12,33,78);        // sample array
$arr = array_flip($arr);
unset($arr[12]);
$arr = array(array_keys($arr)); 

Pozbyliśmy się z tablicy wartości 12, a rezultat jest następujący:

 
Array ( [0] => Array ( [0] => 11 [1] => 13 [2] => 33 [3] => 78 ) ) 

 

Ostatni najdłuższy element tablicy:

 
 
$array = array("input" => "submit", "textarea" => "Some long spiel of textrna textarea, probably",
                        "another-input" => "make me longer", "and" => "another", "etc" => "etc.");
 
echo '<!DOCTYPE HTML SYSTEM><html><head><title>long</title></head><body><pre>Longest value: ',
                                            get_longest_value($array),'</pre></body></html>';
 
function get_longest_value($array) {
    foreach ($array as $key => $value) {
        $lengths[$key] = strlen($value);
    }
    asort($lengths);
    $lengths = array_flip($lengths);
    $longest = str_replace("rn", "n", $array[array_pop($lengths)]);
    if (get_magic_quotes_gpc()) { return stripslashes($longest); }
    return $longest;
}
 
$tablica1 = array ("zielony", "czerwony", "niebieski", "czarny", "fioletowy");
$c = get_longest_value ($tablica1); 
print_r($c);
 

Wynik:

 
Longest value: Some long spiel of text
a textarea, probably
 
fioletowy