Ровно один случай значения в массиве

Я пытаюсь найти нативную функцию PHP, которая возвращает true если есть только одно вхождение любого данного элемента в массиве.

Например:

$searchedForValue = 3;

$array1 = [1,2,3,4,5,6];
$array2 = [1,2,3,3,4,5];
$array3 = [1,2,4,5,6];

oneOccurrence($array1,$searchedForValue);
oneOccurrence($array2,$searchedForValue);
oneOccurrence($array3,$searchedForValue);

Это должно вернуть:

true
false
false

ура

0

Решение

Вы должны использовать array_count_values ​​() Вот.

$array_values = array_count_values($array2);

Это вернет массив. Ключ обозначает каждый элемент $array2 и значение обозначает частоту каждого элемента .:

Array (
[1] => 1
[2] => 1
[3] => 2  // Denotes 3 appears 2 times
[4] => 1
[5] => 1
)

if (@$array_values[$searchedForValue] == 1) {
echo "True";
} else {
echo "False";
}
1

Другие решения

Это делает то, что вы хотите. Пустоголовый, echoИНГ oneOccurence не выводит «истина» или «ложь», он возвращает логическое значение.

function oneOccurrence ($arr, $val) {
$occurrences = [];
foreach ($arr as $v) {
if ($v == $val) {
$occurrences[] = $v;
}
}

return count($occurrences) == 1;
}

P.S echo не нуждается в скобках, так как это конструкция PHP.

0

Небольшая служебная функция — подсчет значений массива с использованием array_count_values а затем, если ключ поиска существует и если его количество точно равно 1, вернуть true иначе false:

function oneOccurrence($array, $searchValue) {
$array = array_count_values($array);
return (array_key_exists($searchValue, $array) && $array[$searchValue]==1)?true:false;
}

Проверьте EVAL

0

Так как вы ищете один вхождение: http://codepad.org/cZImb4FI

использование array_count_values ​​()

<?php

$searchedForValue = 3;

$array1 = array(1,2,3,4,5,6);
$array2 = array(1,2,3,3,4,5);
$array3 = array(1,2,4,5,6);

$arr = array($array1,$array2 ,$array3);

function array_count_values_of($value, $array) {
$counts = array_count_values($array);
return $counts[$value];
}

foreach($arr as $ar){
if( array_count_values_of($searchedForValue,$ar)==1){echo "true";}else{echo "false";}
}

?>

выход

правда ложь ложь

0
    //In Php in_array() function is provided..

$searchedForValue = 3;

$array1 = array(1,2,3,4,5,6);
$array2 = array(1,2,3,3,4,5);
$array3 = array(1,2,4,5,6);

if(in_array($searchedForValue,$array1))
{
echo "true";
}
else
{
echo "false";
}

if(in_array($searchedForValue,$array2))
{
echo "true";
}
else
{
echo "false";
}

if(in_array($searchedForValue,$array3))
{
echo "true";
}
else
{
echo "false";
}
-1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector