Требуемое регулярное выражение, чтобы избежать запрошенного значения встречается несколько раз в данном массиве - PullRequest
0 голосов
/ 22 октября 2018

У меня есть массив из запроса.Я хочу подтвердить это.Например, если у меня есть массив,

$array = ['red', 'yellow', 'green', 'red'];

$request = ['colour' => 'red'];

В вышеприведенном случае он должен пройти проверку, так как значение запроса представлено несколько раз в данном массиве.

Ответы [ 3 ]

0 голосов
/ 22 октября 2018

Я думаю, что это то, что вы хотите, если я правильно понимаю вашу очередь http://php.net/manual/en/function.array-unique.php

$array = ['red','red','yellow','green'];
$arr = array_unique($array);
// $arr would now be ['red','yellow','green'];

если я неправильно понял, это даст вам количество появлений в массиве http://us2.php.net/manual/en/function.array-count-values.php

0 голосов
/ 22 октября 2018

Если вам нужно количество каждого элемента в массиве, вы можете использовать array_count_values.

Это вернет массив с ключом "red" и значением 2.

var_dump(array_count_values($arr));

Есливам нужен только «красный» в качестве вывода, вы можете использовать array_diff для сортировки всех значений, которые 1.

$array = ['red', 'yellow', 'green', 'red'];

$counts = array_count_values($array);
$oneOrMore = array_diff($counts, [1]);

var_dump($oneOrMore);

//array(1) {
//   ["red"]=>int(2)
//}

https://3v4l.org/FNYLS

0 голосов
/ 22 октября 2018

Итак, согласно вашим новым спецификациям и отредактированному вопросу:

<?php

$array = ['red', 'yellow', 'green', 'red'];

$request = ['colour' => 'red'];

// Error counter
$errors = 0;

// If request shows up in the array.. move to next block
if( in_array( $request['colour'], $array ) ){

  /* Check how many times this key value shows up,then assign to count 
     variable.
     In this example, $request['colour'] is red
     array_count_values($arr) returns an array 
        $array['red'=> 2,'yellow'=> 1,...], so 
     show me the **count** in this array at array_key position for "red", 
     being two.
    */
    $count = array_count_values( $array )[ $request['colour'] ];
    // if this count is more than 1, increment our error flag for use later
    if ($count > 1){
        $errors++;
        echo "Ut oh, this value shows up more than once in our array";
    }

}

или для простоты:

$count = array_count_values( $array )[ $request['colour'] ];

if ($count > 1){ $errors++; }

echo $errors;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...