Проверьте, является ли переменная числом или массивом - PullRequest
0 голосов
/ 24 февраля 2012

Я хочу проверить, является ли содержимое переменной числом или массивом.is_array(), is_int(), is_numeric() на самом деле не работают.В настоящее время я использую myArray [1], который, кажется, работает.Но мне интересно, почему одна из этих функций не может сделать это для меня?

Редактировать:

Кажется, что у меня было что-то вроде myArray['id'] в качестве контента, и этовсегда является массивом.

Ответы [ 4 ]

4 голосов
/ 24 февраля 2012
$array = is_array(13) ? "yes" : "no";
$int = is_int(13) ? "yes" : "no";
$numeric = is_numeric(13) ? "yes" : "no";

echo $array."\n", $int."\n", $numeric."\n";

Ответы с

no
yes
yes

Как и ожидалось, поэтому я не совсем уверен, в чем здесь проблема!

Возможно, стоит отметить, что если вы запустите:

$array = is_array("13") ? "yes" : "no";
$int = is_int("13") ? "yes" : "no";
$numeric = is_numeric("13") ? "yes" : "no";

echo $array."\n", $int."\n", $numeric."\n";

Ответ:

no
no
yes

Что, как и следовало ожидать, строка и число не представлены в виде массивов.

Запуск gettype, подобный этому:

echo gettype(13);

показывает, что это integer.

2 голосов
/ 24 февраля 2012

это не настоящий вопрос.is_array() очевидно возвращает false для числа 13

Есть какие-либо реальные проблемы?

Хотя PHP может позволить вам получить номера 1 и3 из переменной содержит число 13 с использованием того же синтаксиса, который используется для доступа к членам массива, он не делает массив целочисленным.Это просто «синтаксический сахар».

Вы должны проверить свои впечатления, прежде чем писать вопрос.

1 голос
/ 24 февраля 2012

Вы уверены?

$myNumber = 13;

$myArray = array("test" => "data");

if(is_array($myNumber)) {
    echo "myNumber is an array!";
}else{
    if(is_numeric($myNumber)) {
        echo "myNumber is not an array, but it is a number!";
    }
}

Я получаю myNumber не массив, но это число!

0 голосов
/ 24 февраля 2012

Вы можете использовать функцию gettype.

$type = gettype($variable);
if ( $type == 'array' ) {
  // it's an array
} else if ( $type == 'integer' ) {
  // it's an integer
} else {
  // it's a trap !
}
...