PHP.mk документација

array_intersect_ukey

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

function.array-intersect-ukey.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека function.array-intersect-ukey.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
array_intersect_ukey

Референца за `function.array-intersect-ukey.php` со подобрена типографија и навигација.

function.array-intersect-ukey.php

array_intersect_ukey

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

array_intersect_ukeyГи пресметува пресеците на низите користејќи функција за враќање на повици на клучевите за споредба

= NULL

array_intersect_ukey(array $array, array ...$arrays, callable $key_compare_func): array

array_intersect_ukey() враќа низа што ги содржи сите вредности од array кои имаат соодветни клучеви што се присутни во сите аргументи.

Параметри

array

Почетна низа за споредба на низите.

arrays

Низи за споредба на клучеви.

key_compare_func

Функцијата за споредба мора да врати цел број помал, еднаков или поголем од нула ако првиот аргумент се смета за помал, еднаков или поголем од вториот, соодветно.

callback(mixed $a, mixed $b): int
Безбедност: стандардниот сет на знаци

Враќање non-integer вредности од функцијата за споредба, како што се floatќе резултира со внатрешно префрлање во int на вратената вредност на повиканата функција. Така вредности како 0.99 and 0.1 ќе бидат префрлени во цел број од 0, што ќе ги спореди таквите вредности како еднакви.

Вратени вредности

Враќа вредности од array чии клучеви постојат во сите аргументи.

Примери

Пример #1 array_intersect_ukey() example

<?php
function key_compare_func($key1, $key2)
{
if (
$key1 == $key2)
return
0;
else if (
$key1 > $key2)
return
1;
else
return -
1;
}

$array1 = array('blue' => 1, 'red' => 2, 'green' => 3, 'purple' => 4);
$array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan' => 8);

var_dump(array_intersect_ukey($array1, $array2, 'key_compare_func'));
?>

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

array(2) {
  ["blue"]=>
  int(1)
  ["green"]=>
  int(3)
}

Во нашиот пример гледате дека само клучевите 'blue' and 'green' се присутни во двете низи и затоа се вратени. Исто така забележете дека вредностите за клучевите 'blue' and 'green' се разликуваат помеѓу двете низи. Сепак се случува совпаѓање бидејќи се проверуваат само клучевите. Вратените вредности се оние од array.

Види Исто така

  • array_diff() - Ги пресметува разликите на низите
  • array_udiff() - Ги пресметува разликите на низите со користење на функција за повикување за споредба на податоци
  • array_diff_assoc() - Ги пресметува разликите на низите со дополнителна проверка на индекс
  • array_diff_uassoc() - Ги пресметува разликите на низите со дополнителна проверка на индекс што се изведува од страна на корисникот обезбедена функција за повикување
  • array_udiff_assoc() - Ги пресметува разликите на низите со дополнителна проверка на индекс, ги споредува податоците со функција за повикување
  • array_udiff_uassoc() - Ги пресметува разликите на низите со дополнителна проверка на индекс, ги споредува податоците и индексите со функција за повикување
  • array_diff_key() - Ги пресметува разликите на низите користејќи клучеви за споредба
  • array_diff_ukey() чии клучеви отсуствуваат од сите други низи.
  • array_intersect() - Пресметува разлика на низи користејќи callback функција на клучевите за споредба
  • array_intersect_assoc() - Пресметува пресек на низи
  • array_intersect_uassoc() - Пресметува пресек на низи со дополнителна проверка на индекс
  • array_intersect_key() - Ги пресметува разликите на низите користејќи функција за повикување на клучевите за споредба

Белешки од корисници 1 белешка

gk на anuary dot com
12 години пред
"array_intersect_ukey" will not work if $key_compare_func is using regular expression to perform comparison. "_array_intersect_ukey" fully implements the "array_intersect_ukey" interface and handles properly boolean comparison. However, the native implementation should be preferred for efficiency reasons.

<?php
$key_compare_func = function ($a, $b) {
    var_dump('a=' . $a. '; b=' . $b);
    
    if (strpos($b, '/') === 0) {
        return preg_match($b, $a) > 0 ? 0 : -1;
    }
    
    if ($a == $b) {
        $weight = 0;
    } else if ($a > $b) {
        $weight = 1;
    } else {
        $weight = -1;
    }
    
    var_dump('literal comparison: ' . $weight);
    
    return $weight;
};

$foo = ['aab' => '', 'bbb' => '', 'ccb' => '', 'abb' => ''];
$bar = ['/[a-z]b[a-z]/' => ''];
$buz = ['/c[a-z][a-z]/' => ''];

echo PHP_EOL . 'array_intersect_ukey' . PHP_EOL . PHP_EOL;

$subject = array_intersect_ukey ($foo, $bar, $buz, $key_compare_func);

echo PHP_EOL;

var_dump($subject);

echo PHP_EOL . '_array_intersect_ukey' . PHP_EOL . PHP_EOL;

$subject = _array_intersect_ukey($foo, $bar, $buz, $key_compare_func);

echo PHP_EOL;

var_dump($subject);

/**
 * @author Gajus Kuizinas <[email protected]>
 * @version 1.0.0 (2013 09 30)
 * @url https://gist.github.com/gajus/271ad5f36337a32a184c
 */
function _array_intersect_ukey (array $arr1, array $arr2, $key_compare_func) {
    $arr_matched = [];
    $arr_unmatched = [];
    
    $args = func_get_args();
    
    $key_compare_func = end($args);
    
    foreach ($arr1 as $k1 => $v1) {
        foreach ($arr2 as $k2 => $v2) {
            $diff = $key_compare_func($k1, $k2);
        
            //var_dump('k1=' . $k1 . ', k2=' . $k2 . ', diff=' . $diff);
            
            if ($diff === 0) {
                $arr_matched[$k1] = $v1;
            } else {
                $arr_unmatched[$k1] = $v1;
            }
        }
    }
    
    if (count($args) <= 3) {
        return $arr_matched;
    }
    
    array_splice($args, 0, 2, [$arr_unmatched]);
    
    return array_merge($arr_matched, call_user_func_array('_array_intersect_ukey', $args));
}

/*
array_intersect_ukey

string(12) "a=bbb; b=aab"
string(21) "literal comparison: 1"
string(12) "a=bbb; b=ccb"
string(22) "literal comparison: -1"
string(12) "a=abb; b=bbb"
string(22) "literal comparison: -1"
string(12) "a=aab; b=abb"
string(22) "literal comparison: -1"
string(22) "a=aab; b=/[a-z]b[a-z]/"
string(22) "a=abb; b=/[a-z]b[a-z]/"
string(22) "a=abb; b=/c[a-z][a-z]/"

array(0) {
}

_array_intersect_ukey

string(22) "a=aab; b=/[a-z]b[a-z]/"
string(22) "a=bbb; b=/[a-z]b[a-z]/"
string(22) "a=ccb; b=/[a-z]b[a-z]/"
string(22) "a=abb; b=/[a-z]b[a-z]/"
string(22) "a=aab; b=/c[a-z][a-z]/"
string(22) "a=ccb; b=/c[a-z][a-z]/"

array(3) {
  ["bbb"]=>
  string(0) ""
  ["abb"]=>
  string(0) ""
  ["ccb"]=>
  string(0) ""
}*/
?>
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.