Каков лучший способ проверить, имеет ли массив более одного элемента?

Мне просто нужно проверить, имеет ли массив более одного элемента. Я пытаюсь сделать это следующим образом:

if (isset($arr['1']))

другой традиционный способ

if (sizeof($arr)>1)

Какая из двух лучше? В таких ситуациях, как мне судить о двух альтернативных методах? Есть ли какой-либо измеритель производительности для измерения, который лучше?

Ответ 1

Используйте этот

if (sizeof($arr) > 1) {
     ....
}

Или

if (count($arr) > 1) {
     ....
}

sizeof() является псевдонимом для count(), они работают одинаково.

Edit: Отвечая на вторую часть вопроса: Две строки кодов в вопросе не являются альтернативными методами, они выполняют разные функции. Первый проверяет, установлено ли значение в $arr['1'], а второе возвращает количество элементов в массиве.

Ответ 2

if(is_array($arr) && count($arr) > 1)

Чтобы быть уверенным, что $arr действительно является массивом.

sizeof является псевдонимом count, я предпочитаю использовать счет, потому что:

  • 1 меньше символов для ввода
  • sizeof с быстрым взглядом может означать размер массива с точки зрения памяти, слишком технический: (

Ответ 3

if (count($arr) >= 2)
{
  // array has at least 2 elements
}

sizeof() является псевдонимом для count(). Оба работают с не-массивами, но они будут возвращать только значения, превышающие 1, если аргумент является либо массивом, либо объектом Countable, поэтому вы вполне можете с этим справиться.

Ответ 4

Очевидно, что наилучшим решением является использование count($arr) > 1 (sizeof - просто псевдоним для count). В зависимости от структуры вашего массива может быть множество элементов, но не $array['1'].

Ответ 5

Используйте count()

if (count($my_array) > 1) {
// do
}

эта страница объясняет это довольно хорошо http://phparraylength.com/

Ответ 6

Я предпочитаю count() функцию вместо sizeOf(), поскольку sizeOf() является только псевдонимом count() и не означает то же самое на многих других языках. Многие программисты ожидают, что sizeOf() вернет объем выделенной памяти.

Ответ 7

Для проверки массива empty() лучше, чем sizeof().

Если массив содержит огромное количество данных. Это займет больше времени для подсчета размера массива. Но проверка пустого всегда легко.

//for empty
  if(!empty($array))
     echo 'Data exist';
  else 
     echo 'No data';


 //for sizeof
 if(sizeof($array)>1)
      echo 'Data exist';
 else 
    echo 'No data';

Ответ 8

isset() только проверяет, установлена ​​ли переменная. Не имеет никакого отношения к размеру или тому, что содержит массив

Ответ 9

Я предполагаю, что $arr является массивом, тогда это то, что вы ищете

if ( sizeof($arr) > 1) ...

Ответ 10

Первый метод if (isset($arr['1'])) не будет работать с ассоциативным массивом.

Например, в следующем коде отображается "Нет, не более одного".

$arr = array(
    'a' => 'apple',
    'b' => 'banana',
);

if (isset($arr['1'])) {
    echo "Yup, more than one.";
} else {
    echo "Nope, not more than one.";
}

Ответ 11

В Swift 4/5 я делаю циклы и получаю значения по умолчанию в Swift 4/5

   for index in 0..<3
    {
        guard let testTop:Prediciton = topPredictions[index] else
        {
            //your default object

        }
        predictionResult.append(testTop)
    }