Проверка, имеет ли массив, например, три значения

#php #arrays

#php #массивы

Вопрос:

Как мне проверить, имеет ли массив (с тремя значениями), который был передан функции из другого файла, все три значения? Например, я хочу получить сообщение об ошибке, если кто-то введет $ids=Api_Books_Book::getTest(array(1,2,)); (В третьем ключе / индексе нет значения).

пока это мой код

 public static function getTest($ids){
        $input_result = array(
                      );

        foreach ($ids as $id) {
       $input_result['result']['Id '.$id] =  $id;
       }

            if((array_key_exists('0',$ids))){

            echo "You have inputted some data in the Api_Books_Book::getTest<br/>";
            $input_success = "Successful!";
        }
        else 
        {
            echo "There is no data<br/>";
            $input_success = "Not Successful";
        }

        $result=array('status'=>$input_success,
                      'message'=>"some errors will be displayed here",
                      'result'=> $input_result
                     );



        rdie($result);



                return $result;
}
  

Комментарии:

1. Как насчет if (count($ids) != 3) ?

2. что делать, если в массиве больше 3? например … кто-то ввел 5 значений?

3. Что насчет этого? Каким вы хотите, чтобы поведение было?

4. Я хочу, чтобы он проверял все три / четыре / пять / …../ значений. Не хочу, чтобы быть fixed…it зависит от заданного массива … если он имеет 6 значений … отлично … если 1 …. то же самое…

Ответ №1:

Если у вас есть простые численно индексированные массивы, единственное, что имеет смысл count :

 if (count($array) != 3) // not valid
  

или:

 if (count($array) < 3) // not valid
  

Вы можете использовать $array = array_values($array) для сброса цифровых клавиш, чтобы убедиться, что значения находятся в индексе [0] , [1] [2] а не в каких-либо других индексах.

Если у вас есть пары ключ => значение, и вы ожидаете, что будут установлены определенные ключи, используйте array_diff_key :

 $expectedKeys = array('foo', 'bar', 'baz');
if (array_diff_key(array_flip($expectedKeys), $array)) // not valid
  

Комментарии:

1. Спасибо за помощь новичку. Мы зависим от вас, высококвалифицированных программистов типа. 😀