Каков лучший способ проверить, имеет ли массив более одного элемента?
Мне просто нужно проверить, имеет ли массив более одного элемента.
Я пытаюсь сделать это следующим образом:
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)
}