#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. Спасибо за помощь новичку. Мы зависим от вас, высококвалифицированных программистов типа. 😀